Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

O loʻu igoa o Dmitry, ou te galue o se suʻega i le kamupani MEL Saienisi. E le'i leva talu ai nei na ou fa'amae'aina ai se vaega lata mai mai Firebase Test Lab - o lona uiga, faʻatasi ai ma suʻega meafaigaluega o talosaga iOS e faʻaaoga ai le faʻataʻitaʻiga faʻataʻitaʻiga XCUITest.

Aʻo leʻi oʻo i lenei mea, ua uma ona ou faʻataʻitaʻiina le Firebase Test Lab mo le Android ma e matua fiafia lava i mea uma, o lea na ou filifili ai e taumafai e tuʻu le faʻataʻitaʻiga a le iOS o le poloketi i luga o le tulaga tutusa. Sa tatau ona ou Google tele ae le o mea uma na aoga i le taimi muamua, o lea na ou filifili ai e tusi se tusiga aʻoaʻoga mo i latou o loʻo tauivi pea.

O lea la, afai e iai sau suʻega UI i luga o se poloketi iOS, e mafai ona e taumafai e faʻatautaia i latou i masini moni i aso nei, saunia lelei e le Good Corporation. Mo i latou e fiafia, fa'afeiloa'i ile pusi.

I le tala, na ou filifili e fausia i luga o nisi o faʻamatalaga muamua - o se fale teu oloa i GitHub ma le CircleCI build system. Ole igoa ole talosaga ole AmazingApp, bundleID ole com.company.amazingapp. Ou te tuʻuina atu nei faʻamatalaga vave e faʻaitiitia ai le fenumiai mulimuli ane.

Afai e ese le faʻatinoina o ni fofo i lau poloketi, faʻasoa lou poto masani i faʻamatalaga.

1. O suega lava ia

Fausia se lala poloketi fou mo su'ega UI:

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

Sei o tatou tatalaina le poloketi i le XCode ma fatuina se Target fou ma suʻega UI [XCode -> File -> New -> Target -> iOS Testing Bundle], tuʻuina atu i ai le igoa faʻamalamalamaga AmazingAppUITests.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

Alu i le Build Phases vaega o le faʻatulagaina Target ma siaki le i ai o Target Dependencies - AmazingApp, i le Compile Sources - AmazingAppUITests.swift.

O se fa'ata'ita'iga lelei o le tu'u'ese'ese lea o filifiliga fau fale i ni Fuafuaga 'ese'ese. Matou te fatuina se polokalame mo a matou suʻega UI [XCode -> Product -> Scheme -> New Scheme] ma tuʻuina i ai le igoa tutusa: AmazingAppUITests.

O le fausiaina o le polokalame e tatau ona aofia ai le Taulaga o le talosaga autu - AmazingApp ma Target UI suʻega - AmazingAppUITests - vaʻai faʻamalama

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

O le isi, matou te fatuina se faʻatulagaga fou mo suʻega UI. I le XCode, kiliki i le faila o le poloketi ma alu i le Faʻamatalaga vaega. Kiliki i luga o le "+" ma fatuina se faatulagaga fou, mo se faʻataʻitaʻiga XCtest. O le a tatou manaʻomia lenei mea i le lumanaʻi ina ia 'alofia ai le siva ma le topa pe a oʻo i le saini code.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

E le itiiti ifo ma le tolu Target i lau poloketi: o le faʻaoga autu, suʻega iunite (pe a uma, o loʻo i ai, saʻo?) ma suʻega Target UI na matou fatuina.

Alu i le Target AmazingApp, Fausia Seti tab, Code Signing Identity vaega. Mo le XCtest configuration, filifili iOS Developer. I le vaega Code Signing Style, filifili Manual. Matou te le'i fa'atupuina se fa'amatalaga tu'ufa'atasi, ae matou te toe fo'i i ai i se taimi mulimuli ane.

Mo Target AmazingAppUITests matou te faia le mea lava e tasi, ae i totonu o le koluma Faʻamatalaga Faʻamatalaga o oloa matou te ulufale i le com.company.amazingappuitests.

2. Faʻatulagaina se poloketi i le Apple Developer Program

Alu i le Apple Developer Program itulau, alu i le Tusi Faamaonia, Fa'ailoga & Tala'aga vaega ona sosoo ai lea ma le koluma App ID o le mea Fa'ailoa. Fausia se ID ID fou e taʻua o AmazingAppUITests ma bundleID com.company.amazingappuitests.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

O le taimi nei ua matou maua le avanoa e sainia ai a matou suʻega ma se tusi faamaonia ese, ae ... O le faʻagasologa mo le faʻapipiʻiina o se fale mo suʻega e aofia ai le faʻapipiʻiina o le talosaga lava ia ma faʻapipiʻi le tagata suʻe suʻega. O le mea lea, o loʻo matou feagai ma le faʻafitauli o le sainia o ID faʻapipiʻi e lua ma le faʻamatalaga tuʻufaʻatasiga e tasi. O le mea e lelei ai, o loʻo i ai se fofo faigofie ma matagofie - Wildcard App ID. Matou te toe faia le faʻagasologa mo le fatuina o se ID ID fou, ae nai lo le ID Faʻamatalaga Faʻamatalaga, filifili Wildcard App ID pei o le faʻamalama.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

I le taimi nei, ua uma ona matou galulue faatasi ma developer.apple.com, ae matou te le faʻaititia le faʻamalama suʻesuʻe. Tatou o i Nofoaga fa'amaumauga Fastlane ma faitau e uiga i le aoga Match mai le faavaa i le isi.

Na matauina e se tagata faitau faʻalogo e faʻaaoga lenei aoga o le a matou manaʻomia se fale teu oloa ma se faʻamatalaga e mafai ona maua uma i le Apple Developer Program ma Github. Matou te fatuina (pe a faʻafuaseʻi e leai se mea faapena) se tala o le fomu [imeli puipuia], sau i luga ma se upu faataga malosi, resitala i developer.apple.com, ma tofia e avea ma pule o galuega. Ma le isi, matou te tuʻuina atu le faʻamatalaga avanoa i le fale teu oloa github a lau kamupani ma fatuina se fale teu oloa fou ma se igoa e pei o AmazingAppMatch.

3. Fa'atulaga le Fastlane ma le fa'aoga fetaui

Tatala se laina, alu i le faila o loʻo i ai le poloketi ma amata le laina vave e pei ona faʻaalia i totonu tusi lesona aloaia. Ina ua uma ona ulufale i le poloaiga

$ fastlane init

O le a fa'amalosia oe e filifili fa'aoga fa'aoga avanoa. Filifili le filifiliga lona fa - seti galuega faatino tusi lesona.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

O le poloketi o loʻo i ai se faʻatonuga fou, lea e aofia ai faila e lua - Appfile ma Fastfile. I se faapuupuuga, matou te teuina faʻamaumauga o auaunaga i Appfile, ma tusi galuega i Fastfile, e taʻua o laina i Faʻamatalaga Fastlane. Ou te fautuaina le faitauina o pepa aloaia: taimi, два.

Tatala le Appfile i lau tusitala tusitusiga e sili ona e fiafia i ai ma aumai i le fomu nei:

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

Matou te toe foʻi i le faʻailoga ma e tusa ai ma le tusi lesona aloaia matou te amata faʻatulagaina le fetaui.

$ fastlane match init
$ fastlane match development

Le isi, faʻapipiʻi le faʻamaumauga o loʻo talosagaina - fale teu oloa, faʻamatalaga, faʻaupuga, ma isi.

E taua ona: A e faʻalauiloa muamua le aoga faʻatusatusa, o le a talosagaina oe e ulufale i se upu faʻaulu e faʻamalo ai le fale teu oloa. E taua tele le faʻasaoina o lenei faʻaupuga; matou te manaʻomia pe a faʻatulagaina le CI server!

Ua aliali mai se faila fou i totonu o le faʻailoga vave - Matchfile. Tatala i lau tusitala tusitusiga e sili ona e fiafia i ai ma faʻaalia e pei o lenei:

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

Matou te faʻatumu saʻo i le auala lenei pe a matou manaʻo e faʻaoga le fetaui i le lumanaʻi e saini ai fale mo faʻaaliga i Crashlytics ma/poʻo le AppStore, o lona uiga, e sainia le fusi ID o lau talosaga.

Ae, e pei ona matou manatua, na matou fatuina se ID Wildcard faapitoa e saini ai le suʻega suʻega. O lea, tatala le Fastfile ma ulufale i se auala fou:

lane :testing_build_for_firebase do

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

end

Fa'asao ma ulufale i totonu o le nofoaga

fastlane testing_build_for_firebase

ma matou vaʻai i le auala na faia ai e fastlane se tusi faamaonia fou ma tuʻu i totonu o le fale teu oloa. Matagofie!

Tatala XCode. O lea la ua ia i matou le fa'amatalaga talafeagai o le tu'uina atu o le fomu Match Development com.company.*, lea e tatau ona fa'amaoti mai i le vaega Fa'amatalaga Fa'amatalaga mo le AmazingApp ma AmazingAppUITests sini.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

O lo'o tumau pea le fa'aopoopoina o le laina mo le fa'aopoopoina o su'ega. Tatou o i faleteuoloa se poloketi fa'apipi'i mo le fa'avavevave e fa'afaigofie ai ona fa'atutu le fa'aulufale atu i le Firebase Test Lab ma mulimuli i fa'atonuga.

Se'i o tatou kopi-pasi mai le ulua'i fa'ata'ita'iga ina ia fa'auma fa'apea la tatou lane testing_build_for_firebase:


 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

Mo faʻamatalaga atoatoa e uiga i le faʻatulagaina o le laina televave i CircleCI, ou te fautuaina le faitau i faʻamaumauga aloaia fa'atasi, два.

Aua nei galo e faaopoopo se galuega fou i la matou 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. Ae faapefea la tatou nofoa suʻega? Fa'atulaga le Firebase.

Se'i tatou o ifo i le mea na tusia ai le tala.

Masalo o lau app e faʻaogaina le Firebase i luga o se fuafuaga e leai se totogi, pe atonu e leai. E matua leai lava se eseesega taua, aua mo suʻega manaʻoga e mafai ona tatou fatuina se isi galuega faʻatasi ma se tausaga o le faʻaaogaina fua (malulu, saʻo?)

Matou te ulufale i totonu o la matou teugatupe faʻapitoa (poʻo se isi lava, e le afaina), ma alu i Itulau fa'amafanafanaga Firebase. Fausia se poloketi fou e igoa AmazingAppUITests.

E taua ona: I le laasaga muamua i le Fastfile i le lane firebase_test_lab_ios_xctest le gcp_project parameter e tatau ona fetaui ma le igoa o le poloketi.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

O tulaga fa'aletonu e fetaui lelei ma i matou.

Aua le tapunia le tab, resitala i lalo o le teugatupe lava e tasi i totonu Gcloud - o se fua talafeagai lea, talu ai o fesoʻotaʻiga ma Firebase e faʻaaogaina le gcloud console interface.

Google o loʻo tuʻuina atu le $ 300 mo le tausaga, lea i le tulaga o le faia o suʻega faʻataʻitaʻi e tutusa ma le tausaga o le faʻaaogaina fua o le auaunaga. Matou te tuʻuina lau faʻamatalaga o tupe totogi, faʻatali mo le suʻega talatupe o le $1 ma maua le $300 i lau teugatupe. A maeʻa le tausaga, o le a otometi lava ona faʻafeiloaʻi le poloketi i se fuafuaga faʻatau fua, o lea e leai se mea e popole ai e uiga i le leiloa o tupe.

Tatou toe fo'i i le fa'ailoga ma le poloketi o le Firebase ma tu'u atu i le fuafuaga o le tau o le Blaze - o lea la e iai se mea e totogi pe a sili atu le tapula'a.

I le gcloud interface, filifili la matou poloketi Firebase, filifili le mea autu o le lisi "Directory" ma faʻaopopo le Cloud Testing API ma Cloud Tools Result API.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

Ona alu lea i le lisi mea "IAM ma le pulega" -> Faʻamatalaga Auaunaga -> Fausia tala o auaunaga. Matou te tuʻuina atu aia tatau e faʻasaʻo ai le poloketi.

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

Fausia se ki API ile JSON format

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS

Matou te manaʻomia le JSON na sii mai i se taimi mulimuli ane, ae mo le taimi nei o le a matou mafaufau i le faʻatulagaina o Suʻega Suʻega.

5. Fa'atulagaina CircleCI

O se fesili talafeagai e tulaʻi mai - o le a le mea e fai i upu faʻamaonia? Ole faiga ole si'osi'omaga ole masini faufale o le a fesoasoani ia i tatou e teu malu a tatou upu fa'amaonia ma isi fa'amatalaga ma'ale'ale. I totonu o le CircleCI project settings, filifili le Siosiomaga Variables

Matou te fa'atautaia su'ega meafaigaluega i le Firebase Test Lab. Vaega 1: Poloketi iOS
Ma fa'atulaga suiga nei:

  • ki: GOOGLE_APPLICATION_CREDENTIALS
    taua: mea o loʻo i totonu o le faila json o le ki o le account service gcloud
  • ki: MATCH_PASSWORD
    tau: faʻaupuga mo le decrypting le github repository ma tusi faamaonia
  • ki: FASTLANE_PASSWORD
    taua: Apple Developer Portal infrastructure account password

Matou te faʻasaoina suiga, faia se PR ma lafo i la matou 'au taʻitaʻia mo le iloiloga.

O taunuʻuga

O se taunuuga o nei togafiti faigofie, na matou maua ai se tulaga lelei, mautu galue ma le mafai ona puʻeina vitio i luga o le masini mata i le taimi o suʻega. I le faʻataʻitaʻiga faʻataʻitaʻiga, na ou faʻamaonia le faʻataʻitaʻiga o le masini iPhone X, ae o le faʻatoʻaga e maua ai se filifiliga tele mai se tuufaatasiga o faʻataʻitaʻiga eseese ma iOS versions.

O le vaega lona lua o le a tuʻuina atu i laʻasaga taʻitasi seti o le Firebase Test Lab mo se poloketi Android.

puna: www.habr.com

Faaopoopo i ai se faamatalaga