Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Zita rangu ndiDmitry, ndinoshanda semuongorori mukambani MEL Sayenzi. Munguva pfupi yapfuura ndakapedza kubata nechinhu chazvino kubva Firebase Test Lab - kureva, nekuyedzwa kwekushandisa kweIOS zvikumbiro uchishandisa iyo yemuno yekuyedza chimiro XCUITest.

Izvi zvisati zvaitika, ndakanga ndatoedza Firebase Test Lab yeAroid uye ndainyatsofarira zvose, saka ndakafunga kuedza kuisa iOS test infrastructure yepurojekiti pamakumbo akafanana. Ini ndaifanira kuGoogle zvakanyanya uye hazvisi zvese zvakashanda kekutanga, saka ndakafunga kunyora chinyorwa chekudzidzisa kune avo vachiri kunetsekana.

Saka, kana iwe uine UI bvunzo pane iOS purojekiti, unogona kutoedza kuvamhanyisa pamidziyo chaiyo nhasi, yakapihwa nemutsa neGood Corporation. Kune avo vanofarira, gamuchirai kune katsi.

Munyaya, ndakafunga kuvaka pane imwe yekutanga data - yakavanzika repository paGitHub uye CircleCI kuvaka system. Zita rekushandisa rinonzi AmazingApp, bundleID is com.company.amazingapp. Ini ndinopa iyi data nekukasira kuderedza kunyongana kunotevera.

Kana iwe wakaita dzimwe mhinduro mupurojekiti yako zvakasiyana, igovera ruzivo rwako mune zvakataurwa.

1. Miedzo pachayo

Gadzira bazi idzva reprojekiti yeUI bvunzo:

$ git checkout develop
$ git pull
$ git checkout -b β€œfeature/add-ui-tests”

Ngativhure purojekiti muXCode uye tigadzire Target nyowani ine UI bvunzo [XCode -> Faira -> Nyowani -> Target -> iOS Testing Bundle], tichizvipa iro rinozvitsanangura zita AmazingAppUITests.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Enda kuBuild Phases chikamu cheTarget yakagadzirwa uye tarisa kuvapo kweTarget Dependencies - AmazingApp, muCompile Sources - AmazingAppUITests.swift.

Tsika yakanaka ndeyekuparadzanisa sarudzo dzekuvaka dzakasiyana muZvirongwa zvakasiyana. Isu tinogadzira chirongwa cheUI bvunzo dzedu [XCode -> Chigadzirwa -> Scheme -> New Scheme] uye tinochipa iro zita rimwechete: AmazingAppUITests.

Kuvaka kweiyo yakagadzirwa chirongwa kunofanirwa kusanganisira iyo Target yechishandiso chikuru - AmazingApp uye Target UI bvunzo - ZvinoshamisaAppUITests - ona skrini.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Tevere, tinogadzira gadziriso nyowani yeUI bvunzo. MuXCode, tinya pane faira reprojekiti uye enda kune Info chikamu. Dzvanya pa "+" uye gadzira gadziriso nyowani, semuenzaniso XCtest. Tichazoda izvi mune ramangwana kuti tidzivise kutamba nengoma kana tasvika pakusaina kodhi.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Pane zvinokwana zvitatu Zvinangwa mupurojekiti yako: iyo huru yekushandisa, bvunzo dzeyuniti (mushure mezvose, zviripo, handiti?) uye Target UI bvunzo dzatakagadzira.

Enda kune Target AmazingApp, Vaka Zvirongwa tab, Code Kusaina Identity chikamu. Nekugadziriswa kweXCtest, sarudza iOS Developer. Muchikamu cheCode Signing Style, sarudza Manual. Isu hatisati tagadzira profil yekugovera parizvino, asi isu tichazodzokera kwairi gare gare.

Kune Target AmazingAppUITests tinoita zvakafanana, asi muChigadzirwa Bundle Identifier column tinoisa com.company.amazingappuitests.

2. Kugadzira chirongwa muApple Developer Program

Enda kune iyo Apple Developer Chirongwa peji, enda kune Zvitupa, Identifiers & Profiles chikamu uye ipapo kuApp IDs column yeIdentifiers chinhu. Gadzira ID itsva yeApp inonzi AmazingAppUITests uye bundleID com.company.amazingappuitests.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Iye zvino tave nemukana wekusaina bvunzo dzedu nechitupa chakasiyana, asi ... Maitiro ekuunganidza chivakwa chekuyedza anosanganisira kuunganidza application pachayo uye kuunganidza mumhanyi webvunzo. Saizvozvo, takatarisana nedambudziko rekusaina maID masumbu maviri ane mbiri yekugovera. Neraki, pane yakapusa uye inoyevedza mhinduro - Wildcard App ID. Isu tinodzokorora maitiro ekugadzira ID itsva yeApp, asi pachinzvimbo cheExplicit App ID, sarudza Wildcard App ID sezviri pamufananidzo.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Panguva ino, tapedza kushanda nedeveloper.apple.com, asi hatizoderedze hwindo rebrowser. Handei ku Fastlane zvinyorwa saiti uye verenga nezve Match utility kubva pabutiro kusvika kubutiro.

Muverengi anoteerera akaona kuti kushandisa chishandiso ichi tichada yakavanzika repository uye account ine mukana kune ese ari maviri Apple Developer Chirongwa uye Github. Isu tinogadzira (kana kamwe kamwe pasina chinhu chakadaro) nhoroondo yefomu [email inodzivirirwa], huya nephasiwedi yakasimba, inyore ne developer.apple.com, uye igadze semutungamiri weprojekti. Tevere, isu tinopa iyo account mukana kune yako kambani github repository uye gadzira nyowani yakavanzika repository ine zita rakaita seAmazingAppMatch.

3. Kumisikidza Fastlane uye match utility

Vhura terminal, enda kune folda ine purojekiti uye tanga fastlane sezvakaratidzwa mukati official manual. Mushure mekupinda murairo

$ fastlane init

Iwe unozokumbirwa kuti usarudze zviripo zvekushandisa zvigadziriso. Sarudza yechina sarudzo - manual project setup.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Iyo purojekiti ine dhairekitori nyowani fastlane, ine mafaera maviri - Appfile uye Fastfile. Muchidimbu, tinochengeta data rebasa muAppfile, uye tinonyora mabasa muFastfile, inonzi nzira muFastlane terminology. Ndinokurudzira kuverenga zvinyorwa zvepamutemo: nguva, Π΄Π²Π°.

Vhura iyo Appfile mune yako yaunofarira mavara edhita uye uuye nayo kune inotevera fomu:

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

Isu tinodzokera kune terminal uye zvinoenderana neiyo official manual tinotanga kugadzirisa match.

$ fastlane match init
$ fastlane match development

Tevere, isa iyo yakakumbirwa data - repository, account, password, nezvimwe.

Zvakakosha kuti: Paunotanga kuvhura mutambo utility, iwe unozokumbirwa kuisa password kuti unyore repository. Izvo zvakanyanya kukosha kuchengetedza iyi password; isu tichaida kana uchimisa iyo CI server!

Imwe faira nyowani yaonekwa mufastlane folda - Matchfile. Ivhure mune yako yaunofarira mavara edhita uye iratidze seizvi:

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

Isu tinozvizadza nenzira iyi kana isu tichida kushandisa match mune ramangwana kusaina zvivakwa zvekuratidzira muCrashlytics uye/kana AppStore, ndiko kuti, kusaina bundle ID yechishandiso chako.

Asi, sezvatinorangarira, takagadzira yakakosha Wildcard ID kusaina bvunzo kuvaka. Naizvozvo, vhura Fastfile uye pinda nzira nyowani:

lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"  # создаСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°Π½Ρ‡ для development сСртификата для подписи тСстовой сборки.
    )

end

Sevha uye pinda mune terminal

fastlane testing_build_for_firebase

uye isu tinoona kuti fastlane yakagadzira sei chitupa chitsva ndokuchiisa mune repository. Hukuru!

Vhura XCode. Iye zvino tave neprofile inodiwa yefomu reMatch Development com.company.*, iro rinofanirwa kutsanangurwa muchikamu cheProvisioning profil yezvinangwa zveAmazingApp uye AmazingAppUITests.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Inoramba ichiwedzera nzira yekuunganidza bvunzo. Handei ku repository plugin purojekiti yefastlane inoita kuti zvive nyore kuseta kunze kune Firebase Test Lab uye kutevedzera mirairo.

Ngatikopei-nama kubva kumuenzaniso wekutanga kuitira kuti nzira yedu yekuyedza_build_for_firebase ipedze kutaridzika seizvi:


 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

Kuti uwane ruzivo rwakakwana nezve kumisikidza fastlane muCircleCI, ini ndinokurudzira kuverenga zviri pamutemo zvinyorwa kamwe, Π΄Π²Π°.

Usakanganwa kuwedzera basa idzva kune yedu config.yml:

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. Zvakadini nebhenji redu rekuedza? Kugadzira Firebase.

Ngatidzikei kuti nyaya yakanyorerwei.

Zvichida app yako inoshandisa Firebase pane chirongwa chemahara, kana pamwe kwete zvachose. Iko hakuna mutsauko wakakosha, nekuti pakuedza zvinodiwa tinogona kugadzira purojekiti yakaparadzana negore rekushandisa mahara (inotonhorera, handiti?)

Isu tinopinda muakaundi yedu yezvivakwa (kana chero imwe, hazvina basa), uye enda Firebase console peji. Gadzira chirongwa chitsva chinonzi AmazingAppUITests.

Zvakakosha kuti: Munhanho yapfuura muFastfile mulane firebase_test_lab_ios_xctest iyo gcp_project parameter inofanirwa kufanana nezita reprojekiti.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Izvo zvigadziriso zvekutanga zvinotikodzera chaizvo.

Usavhare iyo tebhu, nyoresa pasi peiyo account account mukati Gcloud - ichi chiyero chinodiwa, sezvo kutaurirana neFirebase kunoitika uchishandisa gcloud console interface.

Google iri kupa $300 kwegore, iyo mumamiriro ekuita autotests yakaenzana negore rekushandiswa kwekusununguka kwebasa. Isu tinoisa ruzivo rwako rwekubhadhara, tomirira bvunzo yekubvisa madhora 1 togamuchira madhora mazana matatu kuaccount yako. Mushure megore, purojekiti ichaendeswa kune imwe purogiramu yemahara, saka hapana chikonzero chekunetseka pamusoro pekugona kurasikirwa kwemari.

Ngatidzokerei kune iyo tebhu ine Firebase purojekiti uye toiendesa kuBlaze tariff chirongwa - ikozvino isu tine chimwe chinhu chekubhadhara kana muganho ukapfuudzwa.

Mune gcloud interface, sarudza purojekiti yedu yeFirebase, sarudza chinhu chikuru chemenu "Directory" uye wedzera Cloud Testing API uye Cloud Tools Result API.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Wobva waenda kumenu chinhu "IAM uye manejimendi" -> Sevhisi maakaundi -> Gadzira sevhisi account. Isu tinopa kodzero yekugadzirisa chirongwa.

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Gadzira kiyi yeAPI mune JSON fomati

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa

Tichada iyo JSON yakadhindwa pave paya, asi parizvino tichafunga nezve Test Lab setup yakakwana.

5. Kuisa CircleCI

Mubvunzo unonzwisisika unomuka - chii chekuita nemapassword? Iyo nharaunda inoshanduka mashandiro emuchina wedu wekuvaka ichatibatsira kuchengetedza mapassword edu uye imwe data inonzwisisika. Mune iyo CircleCI purojekiti marongero, sarudza Environment Variables

Isu tinomhanyisa bvunzo dzinoshanda muFirebase Test Lab. Chikamu 1: iOS chirongwa
Uye gadzira zvinotevera zvakasiyana:

  • kiyi: GOOGLE_APPLICATION_CREDENTIALS
    kukosha: zviri mukati mejson faira yegcloud service account kiyi
  • kiyi: MATCH_PASSWORD
    kukosha: password yekubvisa iyo github repository ine zvitupa
  • kiyi: FASTLANE_PASSWORD
    kukosha: Apple Developer Portal infrastructure account password

Isu tinochengetedza shanduko, gadzira PR uye tinoitumira kune timu yedu inotungamira kuti iongororwe.

Migumisiro

Nekuda kweizvi manipulations akareruka, takagamuchira yakanaka, yakagadzikana yekushanda kumira nekugona kurekodha vhidhiyo pachiratidziro chemudziyo panguva yekuyedzwa. Mumuenzaniso wekuyedza, ndakatsanangura iyo iPhone X mudziyo modhi, asi purazi rinopa yakapfuma sarudzo kubva musanganiswa wemhando dzakasiyana uye iOS shanduro.

Chikamu chechipiri chichapihwa nhanho-ne-nhanho kuseta yeFirebase Test Lab yepurojekiti yeAroid.

Source: www.habr.com

Voeg