Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Dzina langa ndine Dmitry, ndimagwira ntchito yoyesa pakampani MEL Sayansi. Posachedwapa ndamaliza kuchita ndi chinthu chaposachedwa kwambiri kuchokera Firebase Test Lab - ndicho, ndi kuyesa zida za ntchito iOS ntchito mbadwa kuyezetsa chimango XCUITest.

Izi zisanachitike, ndinali nditayesa kale Firebase Test Lab ya Android ndipo ndimakonda chilichonse, kotero ndidaganiza zoyesa kuyika zida zoyeserera za iOS za polojekitiyi mofanana. Ndinayenera kupita ku Google kwambiri ndipo sizinali zonse zomwe zidachitika nthawi yoyamba, kotero ndinaganiza zolembera nkhani yophunzitsira iwo omwe akuvutikabe.

Chifukwa chake, ngati muli ndi mayeso a UI pa projekiti ya iOS, mutha kuyesa kale kuziyendetsa pazida zenizeni lero, zoperekedwa mokoma mtima ndi Good Corporation. Kwa omwe ali ndi chidwi, landirani paka.

M'nkhaniyi, ndidaganiza zomanga pazida zoyambira - malo achinsinsi pa GitHub ndi dongosolo lomanga la CircleCI. Dzina la pulogalamuyo ndi AmazingApp, bundleID ndi com.company.amazingapp. Ndikupereka deta iyi mwamsanga kuti ndichepetse chisokonezo chotsatira.

Ngati munagwiritsa ntchito mayankho ena mu projekiti yanu mosiyana, gawanani zomwe mwakumana nazo mu ndemanga.

1. Mayeso okha

Pangani nthambi yatsopano yoyeserera ya UI:

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

Tiyeni titsegule pulojekitiyi mu XCode ndikupanga Target yatsopano ndi mayeso a UI [XCode -> Fayilo -> Chatsopano -> Target -> iOS Testing Bundle], ndikuyipatsa dzina lodzifotokozera lokha AmazingAppUITests.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Pitani ku gawo la Build Phases la Target yopangidwa ndikuwona kukhalapo kwa Target Dependencies - AmazingApp, mu Compile Sources - AmazingAppUITests.swift.

Mchitidwe wabwino ndikulekanitsa zosankha zosiyanasiyana zomangirira kukhala ma Scheme osiyana. Timapanga chiwembu cha mayeso athu a UI [XCode -> Product -> Scheme -> New Scheme] ndikuchipatsa dzina lomwelo: AmazingAppUITests.

Kupanga kwachiwembu chomwe chapangidwa kuyenera kuphatikiza Chotsatira cha pulogalamu yayikulu - Mayeso a AmazingApp ndi Target UI - AmazingAppUITests - onani chithunzi

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Kenako, timapanga masinthidwe atsopano a mayeso a UI. Mu XCode, dinani pa fayilo ya polojekiti ndikupita ku gawo la Info. Dinani pa "+" ndikupanga masinthidwe atsopano, mwachitsanzo XCtest. Izi tidzafunika mtsogolomo kuti tipewe kuvina ndi maseche pankhani yosainira ma code.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Pali Zolinga zitatu mu pulojekiti yanu: ntchito yayikulu, kuyesa mayunitsi (pambuyo pake, alipo, sichoncho?) ndi mayeso a Target UI omwe tidapanga.

Pitani ku Target AmazingApp, Mangani Zikhazikiko, gawo la Chizindikiro Chosaina. Pakusintha kwa XCtest, sankhani iOS Developer. Mugawo la Code Signing Style, sankhani Buku. Sitinapange mbiri yoperekera pano, koma tibwereranso posachedwa.

Kwa Target AmazingAppUITests timachita chimodzimodzi, koma mugawo la Product Bundle Identifier timalowetsa com.company.amazingappuitests.

2. Kukhazikitsa pulojekiti mu Apple Developer Program

Pitani patsamba la Apple Developer Program, pitani kugawo la Zikalata, Zozindikiritsa & Mbiri, kenako pagawo la ID za App pa chinthu cha Identifiers. Pangani ID yatsopano ya App yotchedwa AmazingAppUITests ndi bundleID com.company.amazingappuitests.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Tsopano tili ndi mwayi wosayina mayeso athu ndi chiphaso chosiyana, koma ... Ndondomeko yosonkhanitsa kumanga kuti iyesedwe ikuphatikizapo kusonkhanitsa pulogalamuyo yokha ndikusonkhanitsa wothamanga. Chifukwa chake, tikukumana ndi vuto losaina ma ID awiri okhala ndi mbiri imodzi yopereka. Mwamwayi, pali yankho losavuta komanso lokongola - ID ya Wildcard App. Timabwereza ndondomeko yopangira ID yatsopano ya App, koma m'malo mwa Explicit App ID, sankhani ID ya Wildcard App monga pazithunzi.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Pakadali pano, tamaliza kugwira ntchito ndi developer.apple.com, koma sitichepetsa zenera la msakatuli. Tiyeni tipite Tsamba lazolemba za Fastlane ndikuwerenga za Match utility kuyambira pachikuto mpaka kumapeto.

Wowerenga mwachidwi adawona kuti kuti tigwiritse ntchito izi tidzafunika malo osungirako zinsinsi ndi akaunti yokhala ndi Apple Developer Program ndi Github. Timalenga (ngati mwadzidzidzi palibe chinthu choterocho) nkhani ya mawonekedwe [imelo ndiotetezedwa], bwerani ndi mawu achinsinsi amphamvu, lembani ndi developer.apple.com, ndikusankha ngati woyang'anira polojekiti. Chotsatira, timapereka mwayi wofikira ku akaunti yanu ya github ndikupanga malo atsopano okhala ndi dzina ngati AmazingAppMatch.

3. Kukhazikitsa Fastlane ndi kugwiritsa ntchito machesi

Tsegulani terminal, pitani ku chikwatu ndi projekiti ndikuyambitsa fastlane monga momwe zasonyezedwera buku lovomerezeka. Pambuyo polowa lamulo

$ fastlane init

Mudzafunsidwa kuti musankhe masinthidwe omwe alipo. Sankhani njira yachinayi - khwekhwe la polojekiti pamanja.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Ntchitoyi ili ndi chikwatu chatsopano cha fastlane, chomwe chili ndi mafayilo awiri - Appfile ndi Fastfile. Mwachidule, timasunga deta yautumiki ku Appfile, ndikulemba ntchito mu Fastfile, yotchedwa lanes mu mawu akuti Fastlane. Ndikupangira kuwerenga zolemba zovomerezeka: nthawi, Π΄Π²Π°.

Tsegulani Appfile m'mawu omwe mumakonda ndikubweretsa ku mawonekedwe awa:

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

Timabwerera ku terminal ndipo malinga ndi buku lovomerezeka timayamba kukonza machesi.

$ fastlane match init
$ fastlane match development

Kenako, lowetsani zomwe mwapempha - malo, akaunti, mawu achinsinsi, ndi zina.

Nkofunika: Mukayamba kugwiritsa ntchito machesi, mudzapemphedwa kuti mulowetse mawu achinsinsi kuti muchotse posungira. Ndikofunikira kwambiri kusunga mawu achinsinsiwa; tidzayifuna pokhazikitsa seva ya CI!

Fayilo yatsopano yawonekera mufoda ya fastlane - Matchfile. Tsegulani mumkonzi wamawu omwe mumakonda ndikuwonetsa motere:

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

Timazilemba motere ngati tikufuna kugwiritsa ntchito machesi mtsogolomo kusaina ma builds kuti atumizidwe ku Crashlytics ndi/kapena AppStore, ndiye kuti, kusaina ma ID a pulogalamu yanu.

Koma, monga tikukumbukira, tidapanga ID yapadera ya Wildcard kuti tisayine mayeso omanga. Chifukwa chake, tsegulani Fastfile ndikulowetsa njira yatsopano:

lane :testing_build_for_firebase do

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

end

Sungani ndikulowa mu terminal

fastlane testing_build_for_firebase

ndipo tikuwona momwe fastlane adapangira satifiketi yatsopano ndikuyiyika m'malo osungira. Zabwino!

Tsegulani XCode. Tsopano tili ndi mbiri yofunikira ya fomu ya Match Development com.company.*, yomwe ikuyenera kufotokozedwa mu gawo la Provisioning profile pazolinga za AmazingApp ndi AmazingAppUITests.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Zimatsalira kuwonjezera njira yosonkhanitsira mayeso. Tiyeni tipite posungira pulojekiti yowonjezera ya fastlane yomwe imapangitsa kuti zikhale zosavuta kukhazikitsa kutumiza ku Firebase Test Lab ndikutsatira malangizowo.

Tiyeni tikopere-kumata kuchokera ku chitsanzo choyambirira kuti njira yathu yoyesa_build_for_firebase iwoneke motere:


 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 mumve zambiri za kukhazikitsa fastlane ku CircleCI, ndikupangira kuti muwerenge zolemba zovomerezeka kamodzi, Π΄Π²Π°.

Musaiwale kuwonjezera ntchito yatsopano ku config.yml yathu:

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. Nanga bwanji benchi yathu yoyeserera? Kupanga Firebase.

Tiyeni titsike ku zomwe nkhaniyo inalembedwa.

Mwina pulogalamu yanu imagwiritsa ntchito Firebase papulani yaulere, kapena ayi. Palibe kusiyana kwenikweni, chifukwa pazosowa zoyesa titha kupanga projekiti yosiyana ndi chaka chogwiritsa ntchito kwaulere (kozizira, sichoncho?)

Timalowa muakaunti yathu yachitukuko (kapena china chilichonse, zilibe kanthu), ndikupita ku Tsamba la Firebase console. Pangani pulojekiti yatsopano yotchedwa AmazingAppUITests.

Nkofunika: Mu sitepe yapitayi mu Fastfile mu lane firebase_test_lab_ios_xctest gcp_project parameter iyenera kufanana ndi dzina la polojekiti.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Zokonda zokhazikika zimatikwanira bwino.

Osatseka tabu, lembani pansi pa akaunti yomweyo mu Gcloud - ichi ndi muyeso wofunikira, popeza kulumikizana ndi Firebase kumachitika pogwiritsa ntchito mawonekedwe a gcloud console.

Google ikupereka $ 300 kwa chaka, chomwe pochita ma autotests ndi ofanana ndi chaka chogwiritsa ntchito kwaulere. Timalemba zambiri zolipira, kudikirira kubweza $1 ndikulandila $300 ku akaunti yanu. Pambuyo pa chaka, ntchitoyi idzasamutsidwa ku ndondomeko yaulere yaulere, kotero palibe chifukwa chodera nkhawa za kutaya ndalama.

Tiyeni tibwerere ku tabu ndi pulojekiti ya Firebase ndikusamutsira ku dongosolo la tariff ya Blaze - tsopano tili ndi cholipira ngati malire apitilira.

Mu mawonekedwe a gcloud, sankhani pulojekiti yathu ya Firebase, sankhani chinthu chachikulu cha "Directory" ndikuwonjezera Cloud Testing API ndi Cloud Tools Result API.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Kenako pitani ku menyu "IAM ndi makonzedwe" -> Akaunti yautumiki -> Pangani akaunti yautumiki. Timapereka ufulu wosintha pulojekitiyi.

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Pangani kiyi ya API mumtundu wa JSON

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti

Tidzafuna JSON yotsitsidwa mtsogolo pang'ono, koma pakadali pano tilingalira kukhazikitsidwa kwa Test Lab kumalizidwa.

5. Kukhazikitsa CircleCI

Funso lomveka likubuka - chochita ndi mawu achinsinsi? Makina osinthika a chilengedwe a makina athu omanga adzatithandiza kusunga mapasiwedi athu ndi zidziwitso zina. Pazokonda za polojekiti ya CircleCI, sankhani Zosintha Zachilengedwe

Timayesa zida mu Firebase Test Lab. Gawo 1: iOS polojekiti
Ndipo kupanga zosintha zotsatirazi:

  • kiyi: GOOGLE_APPLICATION_CREDENTIALS
    mtengo: zomwe zili mu fayilo ya json ya kiyi ya akaunti ya gcloud
  • kiyi: MATCH_PASSWORD
    mtengo: mawu achinsinsi ochotsera posungira github ndi satifiketi
  • kiyi: FASTLANE_PASSWORD
    mtengo: password ya akaunti ya Apple Developer Portal

Timasunga zosintha, kupanga PR ndikutumiza kwa gulu lathu kuti liwunikenso.

Zotsatira

Chifukwa cha kusintha kosavuta kumeneku, tinalandira ntchito yabwino, yokhazikika yogwira ntchito ndi luso lojambula kanema pazithunzi za chipangizo panthawi yoyesera. Muchitsanzo choyesera, ndinatchula chitsanzo cha chipangizo cha iPhone X, koma famuyi imapereka zosankha zambiri kuchokera kumitundu yosiyanasiyana ndi mitundu ya iOS.

Gawo lachiwiri liperekedwa pakukhazikitsa pang'onopang'ono kwa Firebase Test Lab ya pulojekiti ya Android.

Source: www.habr.com

Kuwonjezera ndemanga