Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Lebitso la ka ke Dmitry, ke sebetsa ke le molekoli k'hamphaning MEL Saense. Haufinyane tjena ke qetile ho sebetsana le karolo ea morao-rao e tsoang ho Firebase Test Lab - e leng, ka liteko tsa lisebelisoa tsa lisebelisoa tsa iOS ho sebelisa moralo oa tlhaho oa tlhahlobo XCUITest.

Pele ho mona, ke ne ke se ke lekile Firebase Test Lab bakeng sa Android mme ke hlile ke rata ntho e 'ngoe le e' ngoe, kahoo ke ile ka etsa qeto ea ho leka ho beha lisebelisoa tsa tlhahlobo ea iOS tsa morero ka tsela e tšoanang. Ke ile ka tlameha ho Google haholo mme ha se ntho e 'ngoe le e' ngoe e ileng ea sebetsa ka lekhetlo la pele, kahoo ke ile ka etsa qeto ea ho ngola sengoloa sa thuto bakeng sa ba ntseng ba sokola.

Kahoo, haeba u na le liteko tsa UI morerong oa iOS, u se u ka leka ho li sebelisa ka lisebelisoa tsa 'nete kajeno, tse fanoeng ka mosa ke Good Corporation. Bakeng sa ba thahasellang, amohela katse.

Paleng, ke nkile qeto ea ho aha holim'a lintlha tse ling tsa pele - polokelo ea poraefete ho GitHub le CircleCI. Lebitso la kopo ke AmazingApp, bundleID ke com.company.amazingapp. Ke hlahisa data ena hang-hang ho fokotsa pherekano e latelang.

Haeba u sebelisitse litharollo tse ling morerong oa hau ka tsela e fapaneng, arolelana boiphihlelo ba hau ho maikutlo.

1. Liteko ka botsona

Theha lekala le lecha la projeke bakeng sa liteko tsa UI:

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

Ha re bule projeke ho XCode 'me re thehe Target e ncha ka liteko tsa UI [XCode -> File -> New -> Target -> iOS Testing Bundle], re e fe lebitso le itlhalosang AmazingAppUITests.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

E-ea karolong ea Build Phase ea Sepheo se entsoeng 'me u hlahlobe boteng ba Target Dependencies - AmazingApp, ho Compile Sources - AmazingAppUITests.swift.

Mokhoa o motle ke ho arola likhetho tse fapaneng tsa ho aha ka li-Scheme tse arohaneng. Re theha leano la liteko tsa rona tsa UI [XCode -> Product -> Scheme -> New Scheme] mme re e fa lebitso le tšoanang: AmazingAppUITests.

Mohaho oa morero o entsoeng o tlameha ho kenyelletsa sepheo sa ts'ebeliso ea mantlha - liteko tsa AmazingApp le Target UI - AmazingAppUITests - bona skrini

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Ka mor'a moo, re theha tlhophiso e ncha bakeng sa liteko tsa UI. Ho XCode, tobetsa faeleng ea projeke ebe u ea karolong ea Info. Tobetsa ho "+" 'me u thehe tlhophiso e ncha, mohlala XCtest. Re tla hloka sena nakong e tlang ho qoba ho tantša ka moropa ha ho tluoa tabeng ea ho saena khoutu.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Ho na le bonyane Liphebello tse tharo morerong oa hau: ts'ebeliso ea mantlha, liteko tsa yuniti (ka mor'a moo, li teng, ho joalo?) le liteko tsa Target UI tseo re li entseng.

Eya ho Target AmazingApp, Theha tab ea Litlhophiso, Karolo ea Boitsebiso ba ho Saena Code. Bakeng sa tlhophiso ea XCtest, khetha iOS Developer. Karolong ea Setaele sa ho Saena Khoutu, khetha Manual. Ha re so hlahise profil ea phepelo, empa re tla khutlela ho eona hamorao.

Bakeng sa Target AmazingAppUITests re etsa se ts'oanang, empa ka har'a kholomo ea Sekhetho sa Sehlahisoa re kenya com.company.amazingappuitests.

2. Ho theha morero ho Apple Developer Program

Eya leqepheng la Lenaneo la Moetsi oa Apple, ea karolong ea Li-Certificate, Identifiers & Profiles ebe u ea karolong ea Li-ID tsa App ea ntho ea Li-Identifiers. Theha ID e ncha ea App e bitsoang AmazingAppUITests le bundleID com.company.amazingappuitests.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Hona joale re na le monyetla oa ho saena liteko tsa rona ka setifikeiti se arohaneng, empa ... Mokhoa oa ho bokella mohaho bakeng sa tlhahlobo o kenyelletsa ho bokella kopo ka boeona le ho bokella semathi sa teko. Ka hona, re tobane le bothata ba ho saena li-ID tse peli tse nang le profil e le 'ngoe ea phano. Ka lehlohonolo, ho na le tharollo e bonolo le e ntle - ID ea Wildcard App. Re pheta mokhoa oa ho theha ID e ncha ea App, empa sebakeng sa ID e hlakileng ea App, khetha ID ea Wildcard App joalo ka skrineng.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Mothating ona, re se re qetile ho sebetsa le developer.apple.com, empa re ke ke ra nyenyefatsa fensetere ea sebatli. Ha re eeng ho Sebaka sa litokomane tsa Fastlane 'me u bale ka tšebeliso ea Match ho tloha qalong ho isa qetellong.

'Mali ea hlokolosi o hlokometse hore ho sebelisa sesebelisoa sena re tla hloka polokelo ea poraefete le ak'haonte e nang le phihlello ho Apple Developer Program le Github. Re theha (haeba ka tšohanyetso ho se na ntho e joalo) tlaleho ea foromo [imeile e sirelelitsoe], tla le password e matla, e ngolise ho developer.apple.com, 'me u e khethe e le mookameli oa morero. Ka mor'a moo, re fana ka phihlello ea akhaonto sebakeng sa polokelo ea github ea k'hamphani ea hau mme re theha polokelo e ncha ea poraefete e nang le lebitso le kang AmazingAppMatch.

3. Ho theha Fastlane le ts'ebeliso ea papali

Bula terminal, e ea foldareng e nang le projeke ebe u qala fastlane joalo ka ha ho bonts'itsoe ho bukana ya semmuso. Kamora ho kenya taelo

$ fastlane init

U tla khothalletsoa ho khetha lisebelisoa tse fumanehang. Khetha khetho ea bone - ho seta morero oa matsoho.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Morero o na le lenane le lecha la fastlane, le nang le lifaele tse peli - Appfile le Fastfile. Ka bokhutšoanyane, re boloka lintlha tsa lits'ebeletso ho Appfile, 'me re ngola mesebetsi ka Fastfile, e bitsoang lanes ka mantsoe a Fastlane. Ke khothaletsa ho bala litokomane tsa molao: linako, два.

Bula Appfile ka har'a mohlophisi oa mongolo oo u o ratang 'me u e tlise ka foromo e latelang:

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

Re khutlela ho terminal mme ho latela bukana ea semmuso re qala ho lokisa papali.

$ fastlane match init
$ fastlane match development

Ka mor'a moo, kenya data e batiloeng - polokelo, akhaonto, password, joalo-joalo.

Ho bohlokoa ho: Ha o qala ts'ebeliso ea papali, o tla kopuoa ho kenya phasewete ho hlakola polokelo. Ho bohlokoa haholo ho boloka phasewete ena; re tla e hloka ha re theha seva ea CI!

Faele e ncha e hlahile foldareng ea fastlane - Matchfile. E bule ho sehlophisi sa mongolo seo u se ratang 'me u se hlahise ka tsela ena:

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

Re e tlatsa hantle ka tsela ena haeba re batla ho sebelisa papali nakong e tlang ho saena li-build bakeng sa ponts'o ho Crashlytics le/kapa AppStore, ke hore, ho saena bundle ID ea kopo ea hau.

Empa, joalo ka ha re hopola, re thehile ID e khethehileng ea Wildcard ho saena moaho oa tlhahlobo. Ka hona, bula Fastfile 'me u kenye tsela e ncha:

lane :testing_build_for_firebase do

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

end

Boloka 'me u kene ka har'a terminal

fastlane testing_build_for_firebase

mme re bona kamoo fastlane a entseng setifikeiti se secha mme a se beha sebakeng sa polokelo. E kholo!

Bula XCode. Hona joale re na le boemo bo hlokahalang ba ho fana ka foromo ea Match Development com.company.*, e tlamehang ho hlalosoa karolong ea Provisioning profil bakeng sa lipehelo tsa AmazingApp le AmazingAppUITests.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

E sala e le ho eketsa lane bakeng sa ho bokella liteko. Ha re eeng ho polokelo projeke ea plugin ea fastlane e nolofaletsang ho theha thepa ho Firebase Test Lab le ho latela litaelo.

Ha re kopise ho tsoa mohlaleng oa mantlha e le hore lane testing_build_for_firebase e qetelle e shebahala tjena:


 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

Bakeng sa tlhaiso-leseling e felletseng mabapi le ho theha fastlane ho CircleCI, ke khothaletsa ho bala litokomane tsa molao hang, два.

Se ke oa lebala ho kenyelletsa mosebetsi o mocha ho config.yml ea rona:

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. Ho thoe'ng ka benche ea rona ea liteko? Ho theha Firebase.

Ha re theoheleng tlase hore na sengoloa se ngoletsoe eng.

Mohlomong sesebelisoa sa hau se sebelisa Firebase ho leano la mahala, kapa mohlomong ho hang. Ha ho na phapang ea mantlha, hobane bakeng sa litlhoko tsa tlhahlobo re ka theha projeke e arohaneng ka selemo sa ts'ebeliso ea mahala (e pholile, na?)

Re kena akhaonteng ea rona ea litšebeletso tsa motheo (kapa leha e le efe, ha ho tsotellehe), ebe re ea ho Leqephe la console ea Firebase. Theha morero o mocha o bitsoang AmazingAppUITests.

Ho bohlokoa ho: Mohato o fetileng ho Fastfile in lane firebase_test_lab_ios_xctest parameter ea gcp_project e lokela ho lumellana le lebitso la morero.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Li-setting tsa kamehla li re tšoanela hantle.

Se ke oa koala tab, ngodisa tlasa ak'haonte e le 'ngoe ho Gcloud - ena ke tekanyo e hlokahalang, kaha puisano le Firebase e etsahala ho sebelisa sebopeho sa gcloud console.

Google e fana ka $ 300 bakeng sa selemo, eo molemong oa ho etsa li-autotests e lekanang le selemo sa ts'ebeliso ea mahala ea ts'ebeletso. Re kenya lintlha tsa hau tsa tefo, re emela tefo ea teko ea $1 ebe re fumana $300 akhaonteng ea hau. Ka mor'a selemo, morero o tla fetisetsoa ka boomo ho moralo oa litefiso tsa mahala, kahoo ha ho hlokahale hore u tšoenyehe ka tahlehelo e ka 'nang ea e-ba teng ea chelete.

Ha re khutlele ho tab ka morero oa Firebase mme re e fetisetse ho moralo oa litefiso tsa Blaze - joale re na le seo re lokelang ho se lefa haeba moeli o fetisitsoe.

Ho sebopeho sa gcloud, khetha projeke ea rona ea Firebase, khetha ntho ea mantlha ea "Directory" 'me u kenye Cloud Testing API le Cloud Tools Result API.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Ebe u ea nthong ea "IAM le tsamaiso" -> Liakhaonto tsa lits'ebeletso -> Theha ak'haonte ea litšebeletso. Re fana ka litokelo tsa ho hlophisa morero.

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Theha senotlolo sa API ka mokhoa oa JSON

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero

Re tla hloka JSON e jarollotsoeng nakoana hamorao, empa hajoale re tla nahana ka ho seta ha Test Lab e phethiloe.

5. Ho theha CircleCI

Ho hlaha potso e utloahalang - ho etsa eng ka li-passwords? Mochini o feto-fetohang oa tikoloho oa mochini oa rona o tla re thusa ho boloka li-password tsa rona le lintlha tse ling tsa bohlokoa. Litlhophisong tsa projeke ea CircleCI, khetha Liphetoho tsa Tikoloho

Re etsa liteko tsa lisebelisoa ho Firebase Test Lab. Karolo ea 1: iOS morero
Ebe u theha mefuta e latelang:

  • senotlolo: GOOGLE_APPLICATION_CREDENTIALS
    boleng: likahare tsa faele ea json ea senotlolo sa akhaonto ea tšebeletso ea gcloud
  • senotlolo: MATCH_PASSWORD
    value: password bakeng sa ho hlakola polokelo ea github ka litifikeiti
  • senotlolo: FASTLANE_PASSWORD
    boleng: password ea akhaonto ea Apple Developer Portal

Re boloka liphetoho, re theha PR mme re e romella ho baetapele ba sehlopha sa rona bakeng sa tlhahlobo.

Liphello

Ka lebaka la mekhoa ena e bonolo, re fumane sebaka se setle, se tsitsitseng sa ho sebetsa se nang le bokhoni ba ho rekota video skrineng sa sesebelisoa nakong ea tlhahlobo. Mohlala oa teko, ke hlalositse mohlala oa sesebelisoa sa iPhone X, empa polasi e fana ka khetho e ruileng ho tsoa ho mefuta e fapaneng ea mefuta le liphetolelo tsa iOS.

Karolo ea bobeli e tla etsoa molemong oa ho hlophisa mohato ka mohato oa Firebase Test Lab bakeng sa projeke ea Android.

Source: www.habr.com

Eketsa ka tlhaloso