Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Aha m bụ Dmitry, ana m arụ ọrụ dị ka onye nyocha n'otu ụlọ ọrụ MEL sayensị. Ọtụtụ n'oge na-adịbeghị anya, Emechara m ịmekọrịta atụmatụ dịtụ ọhụrụ sitere na ụlọ nyocha firebase - ya bụ, jiri ngwá ọrụ nnwale nke iOS ngwa na-eji nwa afọ ule kpuchie XCUITest.

Tupu nke ahụ, anwalela m Firebase Test Lab maka gam akporo na ihe niile masịrị m nke ukwuu, yabụ ekpebiri m ịnwale itinye akụrụngwa nnwale iOS nke ọrụ ahụ n'otu ụzọ ụgbọ oloko ahụ. Ekwesịrị m google ọtụtụ ma ọ bụghị ihe niile na-arụ ọrụ na mbụ, n'ihi ya, m kpebiri ide akwụkwọ nkuzi maka ndị ka ga-eme ya.

Yabụ, ọ bụrụ na ị nwere ule UI na ọrụ iOS, ị nwere ike ịnwale ịgbanye ha na ngwaọrụ dị adị taa, nke Good Corporation jiri obiọma nyere. Mmasị - nnabata n'okpuru pusi.

N'ime akụkọ ahụ, ekpebiri m ịmalite na ụfọdụ data isi mmalite - ebe nchekwa nke onwe na GitHub na CircleCI. Aha ngwa bụ AmazingApp, bundleID bụ com.company.amazingapp. M na-ehota data ndị a ozugbo, iji belata mgbagwoju anya na-esote.

Ọ bụrụ na ị mebere ụfọdụ ngwọta na ọrụ gị dị iche iche, kesaa ahụmahụ gị na nkwupụta.

1. The ule onwe ha

Mepụta alaka ọrụ ọhụrụ maka ule UI:

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

Ka anyị mepee ọrụ ahụ na XCode wee mepụta Target ọhụrụ na ule UI [XCode -> File -> New -> Target -> iOS Testing Bundle], nye ya aha ịkọ AmazingAppUITests.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Gaa na ngalaba Mee usoro nke Target mebere wee lelee maka ịdabere na Target - AmazingApp, na isi mmalite mkpokọta - AmazingAppUITests.swift.

Ọ bụ omume dị mma ikewapụ nhọrọ ụlọ dị iche iche n'ime atụmatụ dị iche iche. Anyị na-emepụta atụmatụ maka ule UI anyị [XCode -> Ngwaahịa -> Atụmatụ -> Atụmatụ ọhụrụ] wee nye ya otu aha: AmazingAppUITests.

Iwulite atụmatụ emepụtara kwesịrị ịgụnye ebumnuche nke ngwa - AmazingApp na ule UI Target - AmazingAppUITests - lee nseta ihuenyo.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Na-esote, anyị na-emepụta nhazi ihe nrụpụta ọhụrụ maka ule UI. Na Xcode, pịa faịlụ ọrụ, gaa na ngalaba Ama. Pịa na "+" wee mepụta nhazi ọhụrụ, dịka ọmụmaatụ XCtest. Anyị ga-achọ nke a n'ọdịnihu ka anyị wee zere iji ịgbà egwu egwu mgbe a bịara n'ịbanye koodu.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Enwere opekata mpe atọ na ọrụ gị: ngwa bụ isi, nnwale otu (enwere ụfọdụ, nri?) na UI nke ule anyị mepụtara.

Gaa na Target AmazingApp, wuo ntọala taabụ, ngalaba nbanye koodu. Maka nhazi XCtest, họrọ iOS Mmepụta. Na ngalaba Ịbanye Ụdị Usoro, họrọ ntuziaka. Anyị emebebeghị profaịlụ inyefe, mana anyị ga-alaghachi na ya ntakịrị oge.

Maka Target AmazingAppUITests, anyị na-eme otu ihe ahụ, mana tinye com.company.amazingappuitests na kọlụm njirimara Ngwaahịa.

2. Ịtọlite ​​​​ọrụ na Apple Developer Programme

Anyị na-aga na ibe Mmemme Mmepụta Apple, gaa na Asambodo, Identifiers & Profaịlụ ngalaba wee gaa na kọlụm NJ ngwa nke ihe Nchọpụta. Mepụta NJ ngwa ọhụrụ aha AmazingAppUITests na bundleID com.company.amazingappuitests.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Ugbu a, anyị nwere ohere iji akwụkwọ dị iche iche bịanye aka n'ule anyị, ma ... Usoro iwu maka ule gụnyere ịmepụta ngwa ahụ n'onwe ya na ịmepụta onye na-agba ọsọ ule. N'ihi ya, anyị na-eche nsogbu nke ịbịanye aka na ngwugwu ngwugwu abụọ nwere otu profaịlụ ntinye. Ọ dabara nke ọma, enwere ngwọta dị mfe ma maa mma - Wildcard App ID. Anyị na-emegharị usoro maka ịmepụta NJ ngwa ọhụrụ, mana kama NJ ngwa ngwa, họrọ Wildcard App ID dị ka ọ dị na nseta ihuenyo.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

N'oge a, anyị emeela developer.apple.com, mana anyị agaghị ebelata windo ihe nchọgharị. Ka anyị gaa saịtị nwere akwụkwọ na Fastlane ma gụọ gbasara Utility Match site na mkpuchi ruo na mkpuchi.

Onye na-agụ nke ọma achọpụtala na iji jiri akụrụngwa a, anyị chọrọ ebe nchekwa nkeonwe yana akaụntụ nwere ohere ịnweta ma Mmemme Mmepụta Apple yana Github. Anyị na-emepụta (ma ọ bụrụ na mberede ọ dịghị ihe dị otú ahụ) akaụntụ nke ụdị [email protected], wepụta okwuntughe siri ike, debanye aha ya na developer.apple.com, ma họpụta ya dị ka onye nchịkwa ọrụ. Na-esote, nye akaụntụ gị ohere ịnweta ebe nchekwa github nke ụlọ ọrụ gị wee mepụta ebe nchekwa ọhụrụ nke nwere aha dịka AmazingAppMatch.

3. Ịtọlite ​​​​Fastlane na ngwa egwuregwu

Mepee ọnụ, gaa na folda nke nwere oru ngo wee bido fastlane dị ka egosiri na ya akwụkwọ ntuziaka. Mgbe itinyere iwu

$ fastlane init

a ga-akpali gị ịhọrọ nhazi ojiji dị. Anyị na-ahọrọ ihe nke anọ - nhazi ntuziaka nke ọrụ ahụ.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Akwụkwọ ndekọ fastlane ọhụrụ apụtala na ọrụ ahụ, nke enwere faịlụ abụọ - Appfile na Fastfile. Na nkenke - na Appfile anyị na-echekwa data ọrụ, na Fastfile anyị na-ede ọrụ, na ngwa ngwa Fastlane nke a na-akpọ lanes. Ana m akwado ịgụ akwụkwọ gọọmentị: ugboro, два.

Mepee Appfile na ndezi ederede ọkacha mmasị gị wee weta ya n'ụdị a:

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

Anyị na-alaghachi na njedebe ma, dịka akwụkwọ ntuziaka gọọmentị si dị, malite ịtọ ntọala egwuregwu.

$ fastlane match init
$ fastlane match development

Ọzọ, tinye data achọrọ - ebe nchekwa, akaụntụ, paswọọdụ, wdg.

Ọ dị mkpa ka: oge mbụ ị na-arụ ọrụ egwuregwu ahụ, ọ ga-ajụ gị ka itinye paswọọdụ iji mebie ebe nchekwa ahụ. Ọ dị ezigbo mkpa ịchekwa paswọọdụ a, anyị ga-achọ ya na ọkwa nke ịtọ ntọala CI!

Faịlụ ọhụrụ apụtala na folda fastlane - Matchfile. Mepee ya na ndezi ederede ọkacha mmasị gị wee weta ya n'ụdị:

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

Anyị na-ejupụta ya n'ụzọ dị otú a ma ọ bụrụ na anyị chọrọ iji egwuregwu n'ọdịnihu bịanye aka na-ewu maka ibugo na Crashlytics na / ma ọ bụ AppStore, ya bụ ịbanye na ngwugwu ID nke ngwa gị.

Mana, dịka anyị na-echeta, anyị mepụtara ID Wildcard pụrụ iche iji bịanye aka na nrụpụta ule. Ya mere, mepee Fastfile ma tinye ụzọ ọhụrụ:

lane :testing_build_for_firebase do

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

end

Chekwa, banye n'ọnụ ọnụ

fastlane testing_build_for_firebase

wee hụ ka fastlane siri mepụta akwụkwọ ọhụrụ wee tinye ya na ebe nchekwa. Nnukwu!

Mepee XCode. Ugbu a, anyị nwere profaịlụ nkwado achọrọ nke ụdị ụlọ ọrụ Match Development com.*, nke a ga-akọwarịrị na ngalaba profaịlụ inye maka ebumnuche AmazingApp na AmazingAppUITests.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Ọ ka dị ka ịgbakwunye okporo ụzọ iji wuo ule. Ka anyị gaa ebe nchekwa fastlane ngwa mgbakwunye oru ngo na-eme ka ọ dị mfe ịtọ mbupụ na Firebase Test Lab ma soro ntuziaka.

Detuo mado site na ihe atụ izizi ka ụzọ anyị test_build_for_firebase mechaa dị ka nke a:


 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

Maka ozi zuru oke gbasara ịtọlite ​​fastlane na CircleCI, ana m akwado ịgụ akwụkwọ gọọmentị otu ugboro, два.

Echefula itinye ọrụ ọhụrụ na config.yml anyị:

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. Kedu maka bench ule anyị? Ịtọlite ​​​​Firebase.

Ka anyị gaa n'ihu, n'ezie, n'ihe e dere akụkọ ahụ.

Ngwa gị nwere ike na-eji Firebase na atụmatụ efu, ma ọ bụ na ọ gaghị eji Firebase ma ọlị. Enweghị ezigbo ọdịiche dị mkpa, n'ihi na maka mkpa nke ule anyị nwere ike ịmepụta ọrụ dị iche iche na afọ nke iji n'efu (ọ dị mma, huh?)

Anyị na-abanye na akaụntụ akụrụngwa anyị (ma ọ bụ ihe ọ bụla ọzọ, ọ dịghị mkpa), wee gaa na firebase console ibe. Mepụta oru ngo ọhụrụ aha ya bụ AmazingAppUITests.

Ọ dị mkpa ka: Na nzọụkwụ gara aga, na Fastfile na lane firebase_test_lab_ios_xctest, gcp_project parameter ga-adakọrịrị aha nke ọrụ ahụ.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Ntọala ndabara dabara anyị nke ọma.

Anyị anaghị emechi taabụ, anyị na-edebanye aha n'okpuru otu akaụntụ n'ime gcloud bụ ihe dị mkpa, ebe ọ bụ na nkwurịta okwu na Firebase na-ewere ọnọdụ site na iji gcloud console interface.

Google na-enye $300 maka otu afọ, nke n'ihe gbasara ime autotest bụ otu afọ nke iji ọrụ ahụ n'efu. Anyị na-abanye data ịkwụ ụgwọ, chere maka ndetu ule nke $1 wee nweta $300 na akaụntụ ahụ. Mgbe otu afọ gasịrị, a ga-ebufe ọrụ ahụ na-akpaghị aka na atụmatụ tarifụ efu, n'ihi ya, ị gaghị echegbu onwe gị maka ego ga-efunahụ ya.

Ka anyị jiri ọrụ Firebase laghachi na taabụ wee bufee ya na atụmatụ tarifu Blaze - ugbu a anyị nwere ihe anyị ga-akwụ ma ọ bụrụ na oke oke.

N'ime gcloud interface, họrọ ọrụ Firebase anyị, họrọ ihe nchịkọta nhọrọ "Katalọgụ" wee tinye API Nlele Uru ojii na Cloud Tools API.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Mgbe ahụ gaa na menu ihe "IAM na nchịkwa" -> Akaụntụ ọrụ -> Mepụta akaụntụ ọrụ. Nye ikike idezi ọrụ a.

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Mepụta igodo API n'ụdị JSON

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo

Anyị ga-achọ JSON ebudatara obere oge, mana ugbu a, anyị ga-atụle ntọlite ​​​​Lab Test zuru ezu.

5. Ịtọ ntọala CircleCI

Ajụjụ ezi uche dị na ya na-emepụta - kedu ihe a ga-eme na okwuntughe? Iji dobe okwuntughe anyị na data ndị ọzọ nwere mmetụta na nzuzo, usoro mgbanwe gburugburu ebe igwe anyị na-ewu ga-enyere anyị aka. Na ntọala ọrụ CircleCI, họrọ mgbanwe gburugburu

Gbaa ule ngwá ọrụ na Firebase Test Lab. Part 1: iOS oru ngo
Ma tọọ mgbanwe ndị a:

  • igodo: GOOGLE_APPLICATION_CREDENTIALS
    uru: ọdịnaya nke igodo ọrụ gcloud faịlụ json
  • igodo: MATCH_PASSWORD
    uru: okwuntughe iji decrypt github repository na asambodo
  • igodo: FASTLANE_PASSWORD
    uru: Apple Developer Portal akụrụngwa akaụntụ paswọọdụ

Anyị na-echekwa mgbanwe ndị ahụ, mepụta PR wee ziga ya na ndị isi otu anyị maka nyocha.

Nsonaazụ

N'ihi nhịahụ ndị a dị mfe, anyị nwetara ezigbo nkwụsi ike na-arụ ọrụ nke nwere ike ịdekọ vidiyo na ihuenyo ngwaọrụ n'oge ule. N'okwu nnwale ahụ, akọwapụtara m ụdị ngwaọrụ iPhone X, mana ugbo na-enye nhọrọ bara ụba site na ngwakọta nke ụdị dị iche iche na ụdị iOS.

Akụkụ nke abụọ ga-etinye aka na ịtọlite ​​​​Firebase Test Lab maka ọrụ gam akporo gam akporo site na nzọụkwụ.

isi: www.habr.com

Tinye a comment