Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Igama lami ngingu-Dmitry, ngisebenza njengomhloli enkampanini Isayensi ye-MEL. Muva nje ngiqede ukubhekana nesici sakamuva esivela ku Ilebhu yokuhlola ye-Firebase — okungukuthi, ngokuhlolwa okubalulekile kwezinhlelo zokusebenza ze-iOS kusetshenziswa uhlaka lokuhlola lwendabuko XCUITest.

Ngaphambi kwalokhu, ngase ngivele ngizamile i-Firebase Test Lab ye-Android futhi ngiyithanda kakhulu yonke into, ngakho-ke nginqume ukuzama ukubeka ingqalasizinda yokuhlola ye-iOS yephrojekthi endaweni efanayo. Bekufanele ngiye ku-Google kakhulu futhi akuwona wonke umsebenzi osebenze okokuqala, ngakho-ke nginqume ukubhala indatshana yokufundisa kulabo abasadonsa kanzima.

Ngakho-ke, uma unokuhlolwa kwe-UI kuphrojekthi ye-iOS, ungazama kakade ukukusebenzisa kumadivayisi wangempela namuhla, ahlinzekwe ngomusa i-Good Corporation. Kulabo abanentshisekelo, wamukelekile ekatini.

Endabeni, nginqume ukwakha kudatha ethile yokuqala - indawo yokugcina yangasese ku-GitHub kanye nohlelo lokwakha lwe-CircleCI. Igama lohlelo lokusebenza i-AmazingApp, i-bundleID ithi com.company.amazingapp. Ngethula le datha ngokushesha ukuze nginciphise ukudideka okulandelayo.

Uma usebenzise izixazululo ezithile kuphrojekthi yakho ngendlela ehlukile, yabelana ngolwazi lwakho kumazwana.

1. Izivivinyo ngokwazo

Dala igatsha lephrojekthi elisha lokuhlolwa kwe-UI:

$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”

Masivule iphrojekthi ku-XCode futhi sakhe Ithagethi entsha enokuhlolwa kwe-UI [XCode -> File -> New -> Target -> iOS Testing Bundle], siyinikeze igama elizichazayo elithi AmazingAppUITests.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Iya engxenyeni ethi Yakha Izigaba zeThagethi edaliwe futhi uhlole ukuba khona Kokuncike Okuqondisiwe - AmazingApp, kokuthi Hlanganisa Imithombo - AmazingAppUITests.swift.

Umkhuba omuhle ukuhlukanisa izinketho ezahlukene zokwakha zibe amaSu ahlukene. Sakha isikimu sokuhlolwa kwethu kwe-UI [XCode -> Product -> Scheme -> New Scheme] futhi siyinikeze igama elifanayo: AmazingAppUITests.

Ukwakhiwa kwesikimu esidaliwe kumele kufake Ithagethi yohlelo lokusebenza oluyinhloko - Ukuhlolwa kwe-AmazingApp kanye ne-Target UI - AmazingAppUITests - bheka isithombe-skrini

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Okulandelayo, sidala ukulungiselelwa kokwakha okusha kokuhlolwa kwe-UI. Ku-XCode, chofoza ifayela lephrojekthi bese uya engxenyeni ethi Ulwazi. Chofoza ku-“+” bese udala ukucushwa okusha, isibonelo i-XCtest. Lokhu sizokudinga esikhathini esizayo ukuze sigweme ukudansa ngethamborini uma kukhulunywa ngokusayina ikhodi.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Okungenani kukhona Okuhlosiwe okuthathu kuphrojekthi yakho: uhlelo lokusebenza oluyinhloko, ukuhlolwa kweyunithi (ngemuva kwakho konke, kukhona, akunjalo?) kanye nokuhlolwa kwe-Target UI esikudalile.

Iya ku-Target AmazingApp, Yakha Izilungiselelo ithebhu, Ikhodi Ukusayinda Identity isigaba. Ngokulungiselelwa kwe-XCtest, khetha i-iOS Developer. Esigabeni Sesitayela Sokusayina Ikhodi, khetha Manuwali. Asikakhiqizi iphrofayili yokuhlinzekela okwamanje, kodwa nakanjani sizobuyela kuyo ngemva kwesikhashana.

Nge-Target AmazingAppUITests senza okufanayo, kodwa kukholamu Yesikhombi Senqwaba Yomkhiqizo sifaka okuthi com.company.amazingappuitests.

2. Ukusetha iphrojekthi Kuhlelo Lonjiniyela we-Apple

Iya ekhasini Lohlelo Lukanjiniyela we-Apple, hamba esigabeni esithi Izitifiketi, Izihlonzi namaphrofayili bese uye kukholomu yama-ID ohlelo wento Yezihlonzi. Dala i-ID yohlelo lokusebenza entsha ebizwa ngokuthi AmazingAppUITests kanye ne-bundleID com.company.amazingappuitests.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Manje sesinethuba lokusayina izivivinyo zethu ngesitifiketi esihlukile, kodwa... Inqubo yokuhlanganisa isakhiwo ukuze sihlolwe ihlanganisa ukuhlanganisa uhlelo lokusebenza ngokwalo nokuhlanganisa umgijimi wokuhlola. Ngokunjalo, sibhekene nenkinga yokusayina omazisi benqwaba ababili abanephrofayili eyodwa yokuhlinzeka. Ngenhlanhla, kunesixazululo esilula nesinhle - i-ID yohlelo lokusebenza lwe-Wildcard. Siphinda inqubo yokudala i-ID entsha yohlelo lokusebenza, kodwa esikhundleni se-ID Yohlelo Lokusebenza Olucacile, khetha i-ID yohlelo lokusebenza lwe-Wildcard njengasesithombeni-skrini.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Njengamanje, sesiqedile ukusebenzisana ne-developer.apple.com, kodwa ngeke sinciphise iwindi lesiphequluli. Asambe siye Indawo yemibhalo ye-Fastlane futhi ufunde mayelana nensizakalo ye-Match kusukela ekuqaleni kuye ekugcineni.

Umfundi oqaphile uqaphele ukuthi ukusebenzisa lolu hlelo sizodinga indawo yokugcina yangasese kanye ne-akhawunti enokufinyelela kukho kokubili Uhlelo Lonjiniyela we-Apple kanye ne-Github. Sakha (uma kungazelelwe ingekho into enjalo) i-akhawunti yefomu [i-imeyili ivikelwe], qhamuka nephasiwedi eqinile, uyibhalise ne-developer.apple.com, futhi uyiqoke njengomlawuli wephrojekthi. Okulandelayo, sinikeza i-akhawunti ukufinyelela kunqolobane ye-github yenkampani yakho bese sidala indawo yokugcina eyimfihlo enegama elifana ne-AmazingAppMatch.

3. Ukusetha i-Fastlane kanye nesisetshenziswa somdlalo

Vula i-terminal, iya kufolda enephrojekthi bese uqalisa i-fastlane njengoba kukhonjisiwe imanuwali esemthethweni. Ngemva kokufaka umyalo

$ fastlane init

Uzocelwa ukuthi ukhethe izilungiselelo zokusetshenziswa ezitholakalayo. Khetha inketho yesine - ukusethwa kwephrojekthi okwenziwa ngesandla.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Iphrojekthi inombhalo omusha we-fastlane, oqukethe amafayela amabili - I-Appfile ne-Fastfile. Kafushane, sigcina idatha yesevisi ku-Appfile, futhi sibhala imisebenzi nge-Fastfile, ebizwa ngokuthi imizila ngesitemu se-Fastlane. Ngincoma ukuthi ufunde imibhalo esemthethweni: izikhathi, два.

Vula i-Appfile kusihleli sakho sombhalo osithandayo bese usilethe efomini elilandelayo:

app_identifier "com.company.amazingapp"       # Bundle ID
apple_dev_portal_id "[email protected]"  # Созданный инфраструктурный аккаунт, имеющий право на редактирование iOS проекта в Apple Developer Program.
team_id "LSDY3IFJAY9" # Your Developer Portal Team ID

Sibuyela ku-terminal futhi ngokusho kwebhukwana elisemthethweni siqala ukulungisa ukufanisa.

$ fastlane match init
$ fastlane match development

Okulandelayo, faka idatha eceliwe - inqolobane, i-akhawunti, iphasiwedi, njll.

Okubalulekile: Lapho uqala ukuqalisa insiza yokufanisa, uzocelwa ukuthi ufake igama-mfihlo ukuze ususe ukubethela inqolobane. Kubaluleke kakhulu ukulondoloza le phasiwedi; sizoyidinga lapho sisetha iseva ye-CI!

Ifayela elisha selivele kufolda ye-fastlane - Matchfile. Ivule kusihleli sakho sombhalo osithandayo futhi usibonise kanje:

git_url("https://github.com/YourCompany/AmazingAppMatch") #Созданный приватный репозиторий для хранения сертификатов и профайлов.
type("development") # The default type, can be: appstore, adhoc, enterprise or development
app_identifier("com.company.amazingapp")
username("[email protected]") # Your Infrastructure account Apple Developer Portal username

Siyigcwalisa ngale ndlela ngqo uma sifuna ukusebenzisa okufanayo esikhathini esizayo ukuze sisayinde izakhiwo ukuze ziboniswe ku-Crashlytics kanye/noma i-AppStore, okungukuthi, ukusayina inqwaba ye-ID yohlelo lwakho lokusebenza.

Kodwa, njengoba sikhumbula, sakha i-ID ye-Wildcard ekhethekile ukuze sisayine isakhiwo sokuhlola. Ngakho-ke, vula i-Fastfile bese ufaka umzila omusha:

lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"  # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
    )

end

Londoloza bese ungena kutheminali

fastlane testing_build_for_firebase

futhi siyabona ukuthi i-fastlane yakha kanjani isitifiketi esisha futhi yasibeka endaweni yokugcina. Kuhle!

Vula i-XCode. Manje sesinephrofayili yokuhlinzeka edingekayo yefomu elithi Match Development com.company.*, okumele licaciswe esigabeni sephrofayili yokuhlinzeka ngezinhloso ze-AmazingApp kanye ne-AmazingAppUITests.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Kusele ukungeza umzila wokuhlanganisa izivivinyo. Asambe siye inqolobane iphrojekthi ye-plugin ye-fastlane eyenza kube lula ukusetha ukuthunyelwa kwe-Firebase Test Lab futhi ulandele imiyalelo.

Masikopishe-sinamathisele esibonelweni sangempela ukuze umzila wethu wokuhlola_build_for_firebase ugcina ubukeka kanje:


 lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"
    )

    scan(
      scheme: 'AmazingAppUITests',      # UI Test scheme
      clean: true,                        # Recommended: This would ensure the build would not include unnecessary files
      skip_detect_devices: true,          # Required
      build_for_testing: true,            # Required
      sdk: 'iphoneos',                    # Required
      should_zip_build_products: true,     # Must be true to set the correct format for Firebase Test Lab
    )

    firebase_test_lab_ios_xctest(
      gcp_project: 'AmazingAppUITests', # Your Google Cloud project name (к этой строчке вернемся позже)
      devices: [                          # Device(s) to run tests on
        {
          ios_model_id: 'iphonex',        # Device model ID, see gcloud command above
          ios_version_id: '12.0',         # iOS version ID, see gcloud command above
          locale: 'en_US',                # Optional: default to en_US if not set
          orientation: 'portrait'         # Optional: default to portrait if not set
        }
      ]
    )

  end

Ukuze uthole ulwazi oluphelele mayelana nokusetha i-fastlane ku-CircleCI, ngincoma ukufunda imibhalo esemthethweni kanye, два.

Ungakhohlwa ukwengeza umsebenzi omusha ku-config.yml yethu:

build-for-firebase-test-lab:
   macos:
     xcode: "10.1.0"   
   working_directory: ~/project
   shell: /bin/bash --login -o pipefail
   steps:
     - checkout
     - attach_workspace:
         at: ~/project
     - run: sudo bundle install     # обновляем зависимости
     - run:
         name: install gcloud-sdk   # на mac машину необходимо установить gcloud
         command: |
           ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
           brew cask install google-cloud-sdk
     - run:
         name: build app for testing
         command: fastlane testing_build_for_firebase  # запускаем lane сборки и отправки в firebase

4. Kuthiwani ngebhentshi lethu lokuhlola? Isetha i-Firebase.

Ake sehlele phansi ukuthi indatshana yayibhalelweni.

Mhlawumbe uhlelo lwakho lokusebenza lusebenzisa i-Firebase kuhlelo lwamahhala, noma mhlawumbe alusebenzisi nhlobo. Awukho nhlobo umehluko oyisisekelo, ngoba ngezidingo zokuhlola singakha iphrojekthi ehlukile enonyaka wokusebenzisa mahhala (kupholile, akunjalo?)

Singena ku-akhawunti yethu yengqalasizinda (noma enye, akunandaba), bese siya ku Ikhasi le-Firebase console. Dala iphrojekthi entsha ebizwa ngokuthi AmazingAppUITests.

Okubalulekile: Esinyathelweni sangaphambilini ku-Fastfile ku-lane firebase_test_lab_ios_xctest ipharamitha ye-gcp_project kufanele ifane negama lephrojekthi.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Izilungiselelo ezizenzakalelayo zisifanela kahle.

Ungavali ithebhu, bhalisa ngaphansi kwe-akhawunti efanayo ku Gcloud - lesi isilinganiso esidingekayo, njengoba ukuxhumana ne-Firebase kwenzeka kusetshenziswa isixhumi esibonakalayo se-gcloud console.

I-Google inikeza u-$300 ngonyaka, okuyinto esimweni sokwenza ukuhlola okuzenzakalelayo okulingana nonyaka wokusetshenziswa mahhala kwesevisi. Sifaka imininingwane yakho yokukhokha, silinde ukuhlolwa kokudonswa kwemali okungu-$1 bese sithola u-$300 ku-akhawunti yakho. Ngemuva konyaka, iphrojekthi izodluliselwa ngokuzenzakalelayo ohlelweni lwentela yamahhala, ngakho-ke asikho isidingo sokukhathazeka mayelana nokulahlekelwa kwemali okungenzeka.

Masibuyele kuthebhu ngephrojekthi ye-Firebase futhi siyidlulisele ohlelweni lwentela ye-Blaze - manje sinokuthile okufanele sikukhokhe uma umkhawulo weqiwe.

Kusixhumi esibonakalayo se-gcloud, khetha iphrojekthi yethu ye-Firebase, khetha into yemenyu eyinhloko ethi “Uhla lwemibhalo” bese wengeza i-Cloud Testing API kanye ne-API Yomphumela Wamathuluzi Efu.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Bese uye entweni yemenyu ethi “IAM nokuphatha” -> Ama-akhawunti wesevisi -> Dala i-akhawunti yesevisi. Sinikeza amalungelo okuhlela iphrojekthi.

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Dala ukhiye we-API ngefomethi ye-JSON

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project

Sizodinga i-JSON elandiwe ngokuhamba kwesikhathi, kodwa okwamanje sizocubungula ukusethwa Kwelebhu Yokuhlola kuqediwe.

5. Ukusetha i-CircleCI

Kuphakama umbuzo ophusile - yini okumele uyenze ngamaphasiwedi? Indlela eguquguqukayo yemvelo yomshini wethu wokwakha izosisiza ukuthi sigcine ngokuvikelekile amaphasiwedi ethu nenye idatha ebucayi. Kuzilungiselelo zephrojekthi ye-CircleCI, khetha Okuguquguqukayo Kwendawo

Senza izivivinyo zamathuluzi e-Firebase Test Lab. Ingxenye 1: iOS project
Futhi setha okuguquguqukayo okulandelayo:

  • ukhiye: GOOGLE_APPLICATION_CREDENTIALS
    inani: okuqukethwe kwefayela le-json lokhiye we-akhawunti yesevisi ye-gcloud
  • ukhiye: MATCH_PASSWORD
    inani: iphasiwedi yokususa ukubethela inqolobane ye-github enezitifiketi
  • ukhiye: FASTLANE_PASSWORD
    inani: Iphasiwedi ye-akhawunti yengqalasizinda ye-Apple Developer Portal

Silondoloza izinguquko, sidale i-PR futhi siyithumele kumholi wethimba lethu ukuze ibuyekezwe.

Imiphumela

Njengomphumela walokhu kukhohlisa okulula, sithole isitendi sokusebenza esihle, esizinzile esinekhono lokuqopha ividiyo esikrinini sedivayisi ngesikhathi sokuhlola. Esibonelweni sokuhlola, ngicacise imodeli yedivayisi ye-iPhone X, kodwa ipulazi linikeza ukukhetha okucebile kusukela kunhlanganisela yamamodeli ahlukene nezinguqulo ze-iOS.

Ingxenye yesibili izonikelwa ekusetheni isinyathelo ngesinyathelo Selebhu Yokuhlola I-Firebase yephrojekthi ye-Android.

Source: www.habr.com

Engeza amazwana