Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

ʻO Dmitry koʻu inoa, hana wau ma ke ʻano he mea hoʻāʻo ma ka hui ʻEpekema MEL. I kēia manawa ua hoʻopau wau i ka hana ʻana i kahi hiʻohiʻona hou mai hale ho'āʻo kahua ahi - ʻo ia hoʻi, me ka hoʻāʻo ʻana o nā noi iOS me ka hoʻohana ʻana i ka framework hoʻāʻo maoli XCUITest.

Ma mua o kēia, ua hoʻāʻo wau i ka Firebase Test Lab no Android a makemake nui i nā mea āpau, no laila ua hoʻoholo wau e hoʻāʻo e kau i ka ʻōnaehana hoʻāʻo ʻo iOS o ka papahana ma ka wāwae like. Pono wau iā Google a ʻaʻole pono nā mea a pau i ka manawa mua, no laila ua hoʻoholo wau e kākau i kahi ʻatikala aʻo no ka poʻe e hakakā nei.

No laila, inā loaʻa iā ʻoe nā hoʻokolohua UI ma kahi papahana iOS, hiki iā ʻoe ke hoʻāʻo e holo iā lākou ma nā polokalamu maoli i kēia lā, hāʻawi ʻia e Good Corporation. No ka poʻe hoihoi, hoʻokipa i ka pōpoki.

Ma ka moʻolelo, ua hoʻoholo wau e kūkulu ma luna o kekahi mau ʻikepili mua - kahi waihona pilikino ma GitHub a me ka ʻōnaehana kūkulu CircleCI. ʻO AmazingApp ka inoa noi, ʻo bundleID ʻo com.company.amazingapp. Hōʻike koke wau i kēia ʻikepili e hōʻemi i ka huikau ma hope.

Inā ʻokoʻa kāu hoʻokō ʻana i kekahi mau hoʻonā i kāu papahana, e kaʻana like i kāu ʻike ma nā manaʻo.

1. ʻO nā hoʻāʻo iā lākou iho

E hana i lālā papahana hou no nā hoʻokolohua UI:

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

E wehe mākou i ka papahana ma XCode a hana i kahi Target hou me nā ho'āʻo UI [XCode -> File -> New -> Target -> iOS Testing Bundle], hāʻawi iā ia i ka inoa wehewehe ponoʻī AmazingAppUITests.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

E hele i ka ʻāpana Build Phases o ka Target i hana ʻia a nānā i ke kū ʻana o Target Dependencies - AmazingApp, ma Compile Sources - AmazingAppUITests.swift.

ʻO kahi hana maikaʻi ʻo ka hoʻokaʻawale ʻana i nā koho kūkulu ʻokoʻa i loko o nā Papahana kaʻawale. Hana mākou i kahi hoʻolālā no kā mākou ho'āʻo UI [XCode -> Product -> Scheme -> New Scheme] a hāʻawi iā ia i ka inoa like: AmazingAppUITests.

Pono ke kūkulu ʻia o ka papahana i hana ʻia i ka Target o ka noi nui - AmazingApp a me Target UI ho'āʻo - AmazingAppUITests - e ʻike i ka screenshot.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

A laila, hana mākou i kahi hoʻonohonoho kūkulu hou no nā hoʻokolohua UI. Ma XCode, kaomi i ka faila papahana a hele i ka ʻike ʻāpana. Kaomi ma ka "+" a hana i kahi hoʻonohonoho hou, no ka laʻana XCtest. Pono mākou i kēia i ka wā e hiki mai ana i mea e pale aku ai i ka hula me ka pahu kani i ke kau inoa ʻana.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

Aia ma kahi o ʻekolu mau Pahuhopu ma kāu papahana: ʻo ka noi nui, nā hoʻāʻo ʻāpana (ma hope o nā mea a pau, aia lākou, pololei?) a me nā hoʻokolohua Target UI a mākou i hana ai.

E hele i Target AmazingApp, Build Settings tab, Code Signing Identity section. No ka hoʻonohonoho XCtest, koho IOS Developer. Ma ka mahele Code Signing Style, koho Manual. ʻAʻole mākou i hana i kahi moʻolelo hoʻolako i kēia manawa, akā e hoʻihoʻi mākou iā ia ma hope iki.

No Target AmazingAppUITests hana like mākou, akā ma ka kolamu Product Bundle Identifier komo mākou i com.company.amazingappuitests.

2. Hoʻonohonoho i kahi papahana ma ka Apple Developer Program

E hele i ka ʻaoʻao ʻo Apple Developer Program, e hele i ka ʻāpana palapala hōʻoia, identifiers & Profiles a laila i ka kolamu App ID o ka mea Identifiers. E hana i kahi ID App hou i kapa ʻia ʻo AmazingAppUITests a me bundleID com.company.amazingappuitests.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

I kēia manawa ua loaʻa iā mākou ka manawa e hoʻopaʻa inoa i kā mākou mau hoʻokolohua me kahi palapala ʻokoʻa, akā ... ʻO ke kaʻina hana no ka hoʻohui ʻana i kahi kūkulu no ka hoʻāʻo ʻana e pili ana i ka hoʻohui ʻana i ka noi ponoʻī a me ka hui ʻana i ka mea holo hoʻāʻo. No laila, ke alo nei mākou i ka pilikia o ke kau inoa ʻana i ʻelua pūʻulu ID me hoʻokahi ʻaoʻao hoʻolako. ʻO ka mea pōmaikaʻi, aia kahi hopena maʻalahi a nani - Wildcard App ID. Hana hou mākou i ke kaʻina hana no ka hana ʻana i kahi ID App hou, akā ma kahi o Explicit App ID, koho i ka Wildcard App ID e like me ka kiʻi.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

I kēia manawa, ua pau kā mākou hana pū me developer.apple.com, akā ʻaʻole mākou e hōʻemi i ka puka aniani. E hele kāua i Paena palapala ʻo Fastlane a heluhelu e pili ana i ka pono Match mai ka uhi a i ka uhi.

Ua ʻike ka mea heluhelu heluhelu e hoʻohana i kēia pono pono mākou i kahi waihona pilikino a me kahi moʻokāki me ke komo ʻana i ka Apple Developer Program a me Github. Hana mākou (inā ʻaʻohe mea like) kahi moʻolelo o ke ʻano [pale ʻia ka leka uila], e kiʻi mai i kahi ʻōlelo huna ikaika, e hoʻopaʻa inoa me developer.apple.com, a koho iā ia i luna hoʻomalu papahana. A laila, hāʻawi mākou i ka moʻokāki i ka waihona github o kāu hui a hana i kahi waihona pilikino hou me kahi inoa e like me AmazingAppMatch.

3. Hoʻonohonoho i ka Fastlane a me ka pono hoʻokūkū

E wehe i kahi pahu, e hele i ka waihona me ka papahana a hoʻomaka i ka fastlane e like me ka mea i hōʻike ʻia manual oihana. Ma hope o ke komo ʻana i ke kauoha

$ fastlane init

E koi ʻia ʻoe e koho i nā hoʻonohonoho hoʻohana i loaʻa. E koho i ka hā o ka koho - manual project setup.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

Loaʻa i ka papahana kahi papa kuhikuhi wikiwiki hou, aia nā faila ʻelua - Appfile a me Fastfile. Ma kahi pōkole, mālama mākou i ka ʻikepili lawelawe ma Appfile, a kākau i nā hana ma Fastfile, i kapa ʻia nā alahele ma Fastlane terminology. Manaʻo wau e heluhelu i ka palapala kūhelu: manawa, mau.

E wehe i ka Appfile i kāu mea hoʻoponopono kikokikona punahele a lawe mai i kēia ʻano:

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

Hoʻi mākou i ka terminal a e like me ka manual official e hoʻomaka mākou e hoʻonohonoho i ka hoʻokūkū.

$ fastlane match init
$ fastlane match development

A laila, e hoʻokomo i ka ʻikepili i noi ʻia - waihona, moʻokāki, password, etc.

He nui no: Ke hoʻomaka mua ʻoe i ka pono hoʻokūkū, e noi ʻia ʻoe e hoʻokomo i kahi ʻōlelo huna e hoʻokaʻawale i ka waihona. He mea nui e mālama i kēia ʻōlelo huna; pono mākou i ka hoʻonohonoho ʻana i ka kikowaena CI!

Ua ʻike ʻia kahi faila hou ma ka waihona wikiwiki - Matchfile. E wehe iā ia i kāu mea hoʻoponopono kikokikona punahele a hōʻike e like me kēia:

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

Hoʻopiha pololei mākou iā ia inā makemake mākou e hoʻohana i ka pāʻani i ka wā e hiki mai ana e kau inoa i nā kūkulu no ka hōʻike ʻana ma Crashlytics a / a i ʻole AppStore, ʻo ia hoʻi, e kau inoa i ka pūʻulu ID o kāu noi.

Akā, e like me kā mākou e hoʻomanaʻo nei, ua hana mākou i kahi ID Wildcard kūikawā e hoʻopaʻa inoa i ka kūkulu hoʻāʻo. No laila, wehe i ka Fastfile a komo i kahi ala hou:

lane :testing_build_for_firebase do

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

end

E mālama a komo i loko o ka pahu

fastlane testing_build_for_firebase

a ʻike mākou i ka hana ʻana o fastlane i kahi palapala hōʻoia hou a waiho i loko o ka waihona. Nui!

Wehe XCode. I kēia manawa ua loaʻa iā mākou ka ʻaoʻao hoʻolako pono o ke ʻano Match Development com.company.*, pono e kuhikuhi ʻia ma ka ʻaoʻao Provisioning profile no nā pahuhopu AmazingApp a me AmazingAppUITests.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

Ke hoʻomau nei e hoʻohui i ke ala no ka hoʻohui ʻana i nā hoʻokolohua. E hele kāua i waihona waihona he papahana plugin no fastlane e maʻalahi ka hoʻonohonoho ʻana i ka hoʻoili ʻana i Firebase Test Lab a hahai i nā kuhikuhi.

E kope-paʻi kāua mai ka laʻana kumu i hiki ai i kā mākou alana testing_build_for_firebase e like me kēia:


 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

No ka ʻike piha e pili ana i ka hoʻonohonoho ʻana i ka fastlane ma CircleCI, manaʻo wau e heluhelu i ka palapala mana pākahi, mau.

Mai poina e hoʻohui i kahi hana hou i kā mākou 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. Pehea kā mākou papa hoʻāʻo? Hoʻonohonoho ʻia ʻo Firebase.

E iho kākou i ka mea i kākau ʻia ai ka ʻatikala.

Hoʻohana paha kāu polokalamu iā Firebase ma kahi hoʻolālā manuahi, a ʻaʻole paha. ʻAʻohe ʻokoʻa koʻikoʻi, no ka mea no ka hoʻāʻo ʻana e hiki iā mākou ke hana i kahi papahana ʻokoʻa me ka makahiki o ka hoʻohana manuahi (ʻoluʻolu, pololei?)

Hoʻokomo mākou i kā mākou moʻokāki waiwai (a i ʻole nā ​​​​mea ʻē aʻe, ʻaʻole pili), a hele i ʻO ka ʻaoʻao console Firebase. E hana i kahi papahana hou i kapa ʻia ʻo AmazingAppUITests.

He nui no: Ma ka ʻanuʻu mua ma ka Fastfile ma ke ala firebase_test_lab_ios_xctest pono e hoʻohālikelike ka ʻāpana gcp_project me ka inoa o ka papahana.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

Ua kūpono nā hoʻonohonoho paʻamau iā mākou.

Mai pani i ka pā, e hoʻopaʻa inoa ma lalo o ka moʻokāki like ma Gcloud - he mea pono kēia, no ka mea, ke kamaʻilio nei me Firebase me ka hoʻohana ʻana i ka interface console gcloud.

Hāʻawi ʻo Google i $300 no hoʻokahi makahiki, ʻo ia ma ke ʻano o ka hana ʻana i nā autotests e like me ka makahiki o ka hoʻohana manuahi ʻana i ka lawelawe. Hoʻokomo mākou i kāu ʻike uku, kali no ka hōʻaiʻē hōʻike o $1 a loaʻa iā $300 i kāu moʻokāki. Ma hope o hoʻokahi makahiki, e hoʻoneʻe ʻia ka papahana i kahi hoʻolālā uku manuahi, no laila ʻaʻohe pono e hopohopo e pili ana i ka nalowale o ke kālā.

E hoʻi kāua i ka pā me ka papahana Firebase a hoʻololi iā ia i ka hoʻolālā uku Blaze - i kēia manawa he mea kā mākou e uku inā ʻoi aku ka palena.

Ma ka interface gcloud, koho i kā mākou papahana Firebase, e koho i ka "Directory" mea papa kuhikuhi nui a hoʻohui i ka Cloud Testing API a me Cloud Tools Result API.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

A laila e hele i ka papa kuhikuhi "IAM a me ka hoʻokele" -> Nā moʻokāki lawelawe -> E hana i kahi moʻokāki lawelawe. Hāʻawi mākou i nā kuleana e hoʻoponopono i ka papahana.

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

E hana i kahi kī API ma ke ʻano JSON

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana

Pono mākou i ka JSON i hoʻoiho ʻia ma hope iki, akā i kēia manawa e noʻonoʻo mākou i ka hoʻonohonoho hoʻonohonoho Test Lab.

5. Hoʻonohonoho i ka CircleCI

He nīnau kūpono - he aha ka hana me nā ʻōlelo huna? E kōkua ka mīkini hoʻololi kaiapuni o kā mākou mīkini kūkulu iā mākou e mālama pono i kā mākou ʻōlelo huna a me nā ʻikepili koʻikoʻi ʻē aʻe. Ma nā hoʻonohonoho papahana CircleCI, koho i nā ʻano hoʻololi kaiapuni

Holo mākou i nā hoʻokolohua mea kani ma Firebase Test Lab. Mahele 1: IOS papahana
A hoʻonohonoho i nā ʻano like ʻole:

  • kī: GOOGLE_APPLICATION_CREDENTIALS
    waiwai: nā mea o ka waihona json o ke kī moʻokāki lawelawe gcloud
  • kī: MATCH_PASSWORD
    waiwai: ʻōlelo huna no ka wehe ʻana i ka waihona github me nā palapala hōʻoia
  • kī: FASTLANE_PASSWORD
    waiwai: Apple Developer Portal infrastructure account password

Mālama mākou i nā loli, hana i kahi PR a hoʻouna i kā mākou alakaʻi hui no ka loiloi.

Nā hopena

Ma muli o kēia mau manipulations maʻalahi, ua loaʻa iā mākou kahi kūlana hana paʻa maikaʻi me ka hiki ke hoʻopaʻa i ka wikiō ma ka pale o ka mea i ka manawa o ka hoʻāʻo. I ka laʻana hoʻāʻo, ua kuhikuhi wau i ka hiʻohiʻona iPhone X, akā hāʻawi ka mahiʻai i kahi koho waiwai mai ka hui pū ʻana o nā ʻano like ʻole a me nā mana iOS.

E hoʻolaʻa ʻia ka ʻāpana ʻelua i ka hoʻonohonoho ʻana i kēlā me kēia pae o Firebase Test Lab no kahi papahana Android.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka