Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Ko Dmitry toku ingoa, kei te mahi ahau hei kaiwhakaatu i roto i te kamupene MEL Pūtaiao. No tata tonu nei ka mutu taku mahi ki tetahi ahuatanga hou mai i Firebase Test Lab — ara, me nga whakamatautau taputapu o nga tono iOS ma te whakamahi i te anga whakamatautau taketake XCUITest.

I mua i tenei, kua whakamatauria e ahau te Firebase Test Lab mo te Android me te tino pai ki nga mea katoa, na reira i whakatau ahau ki te ngana ki te whakauru i nga hanganga whakamatautau iOS o te kaupapa i runga i te turanga kotahi. He nui ahau ki a Google, kaore i pai nga mea katoa i te wa tuatahi, no reira ka whakatau ahau ki te tuhi tuhinga akoranga mo te hunga e raru tonu ana.

Na, ki te whai koe i nga whakamatautau UI mo tetahi kaupapa iOS, ka taea e koe te whakamatau ki te whakahaere i a raatau i runga i nga taputapu tuuturu i tenei ra, na te Good Corporation i tuku. Mo te hunga e hiahia ana, nau mai ki te ngeru.

I roto i te korero, i whakatau ahau ki te hanga i runga i etahi raraunga tuatahi - he putunga motuhake mo GitHub me te punaha hanga CircleCI. Ko te ingoa tono ko AmazingApp, ko te bundleID ko com.company.amazingapp. Ka whakaatu tonu ahau i enei raraunga hei whakaiti i te whakama o muri mai.

Mena he rereke te whakatinana i etahi otinga i roto i to kaupapa, korerohia to wheako ki nga korero.

1. Ko nga whakamatautau ano

Waihangahia he peka kaupapa hou mo nga whakamatautau UI:

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

Me whakatuwhera te kaupapa i roto i te XCode me te hanga i tetahi Target hou me nga whakamatautau UI [XCode -> File -> New -> Target -> iOS Testing Bundle], ka hoatu ki a ia te ingoa whakamarama ake AmazingAppUITests.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Haere ki te waahanga Hangahanga Wāhanga o te Target kua hangaia ka tirohia mo te aroaro o nga Whakaaetanga Target - AmazingApp, i roto i nga Rauemi Whakahiato - AmazingAppUITests.swift.

Ko te mahi pai ko te wehe i nga whiringa hanga rereke ki nga Kaupapa motuhake. Ka hangaia e matou he kaupapa mo o maatau whakamatautau UI [XCode -> Hua -> Kaupapa -> Kaupapa Hou] ka hoatu he ingoa ano: AmazingAppUITests.

Ko te hanga o te kaupapa hanga me whakauru i te Target o te tono matua - AmazingApp me nga whakamatautau UI Target - AmazingAppUITests - tirohia te Whakaahuamata

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

I muri mai, ka hangaia he whirihoranga hanga hou mo nga whakamatautau UI. I roto i te XCode, paatohia te konae kaupapa ka haere ki te waahanga Info. Paatohia te "+" ka waihangahia he whirihoranga hou, hei tauira XCtest. Ka hiahia tatou i tenei wa kei te heke mai kia kore ai e kanikani me te timini ina tae mai ki te hainatanga waehere.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

E toru neke atu ranei nga Whainga kei roto i to kaupapa: te tono matua, nga whakamatautau wae (i muri i nga mea katoa, kei te noho tonu, tika?) me nga whakamatautau UI Target i hangaia e matou.

Haere ki Target AmazingApp, Ripa Tautuhinga Hanga, Waehere Waitohu Tuakiri wahanga. Mo te whirihoranga XCtest, tohua te Kaiwhakawhanake iOS. In the Code Signing Style section, select Manual. Kare ano matou i hanga i tetahi korero tuku, engari ka hoki mai ano matou ki reira.

Mo te Target AmazingAppUITests ka pera ano ta matou mahi, engari i roto i te pou Tautuhi Paihere Hua ka uru matou ki com.company.amazingappuitests.

2. Te whakatu kaupapa i roto i te Apple Developer Program

Haere ki te wharangi Papatono Kaiwhakawhanake Apple, haere ki te waahanga Tiwhikete, Kaitohu me nga Profile katahi ka haere ki te rarangi Taupānga Taupānga o te mea Tautuhinga. Waihangahia he ID Taupānga hou ko AmazingAppUITests me bundleID com.company.amazingappuitests.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

I tenei wa ka whai waahi matou ki te haina i o maatau whakamatautau me tetahi tiwhikete motuhake, engari ... Ko te tikanga mo te whakahiato i te hanga mo te whakamatautau ko te whakauru i te tono ake me te whakaemi i te kaiwawao whakamatautau. No reira, kei te raru matou ki te hainatanga i nga TT paihere e rua me te kotaha tukunga kotahi. Waimarie, he otinga ngawari me te huatau - Wildcard App ID. Ka tukuna ano e matou te tikanga mo te hanga i tetahi ID Taupānga hou, engari hei utu mo te Taupānga Taupānga Whakaata, tohua te ID Taupānga Wildcard pera i te Whakaahuamata.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

I tenei wa, kua mutu ta matou mahi me developer.apple.com, engari kaore e whakaitihia te matapihi tirotiro. Haere tatou ki pae tuhinga Fastlane me te panui mo te whaipainga Match mai i te uhi ki te uhi.

I kite tetahi kaipanui whakarongo ki te whakamahi i tenei taputapu ka hiahia matou ki tetahi putunga motuhake me tetahi kaute e uru ana ki te Apple Developer Program me Github. Ka hangaia e matou (mehemea kaore he mea pera) he korero mo te puka [email tiakina], puta mai he kupuhipa kaha, rēhitatia ki developer.apple.com, ka tohua hei kaiwhakahaere kaupapa. I muri mai, ka tukuna e matou te urunga putea ki te rehitatanga github o to kamupene me te hanga i tetahi putunga motuhake hou me te ingoa penei i te AmazingAppMatch.

3. Te whakatu i a Fastlane me te taputapu whakataetae

Whakatuwheratia he tauranga, haere ki te kōpaki me te kaupapa me te arawhiti i te tere tere kia rite ki te tohu i roto pukapuka mana. I muri i te whakauru i te whakahau

$ fastlane init

Ka ākina koe ki te whiriwhiri i nga whirihoranga whakamahi e waatea ana. Tīpakohia te kōwhiringa tuawha - te tatūnga kaupapa ā-ringa.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Ko te kaupapa he raarangi tererangi hou, e rua nga konae kei roto - Appfile me Fastfile. I roto i te poto, ka rokiroki matou i nga raraunga ratonga ki Appfile, ka tuhi mahi ki Fastfile, e kiia ana ko nga huarahi i roto i nga kupu Fastlane. Ka tūtohu ahau kia panuihia nga tuhinga whaimana: wa, два.

Whakatuwheratia te Appfile ki to etita kuputuhi tino pai ka kawe mai ki te ahua e whai ake 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

Ka hoki matou ki te tauranga, ka rite ki te pukapuka whaimana ka timata matou ki te whirihora i te whakataetae.

$ fastlane match init
$ fastlane match development

I muri mai, whakauruhia nga raraunga i tonoa - te putunga, te kaute, te kupuhipa, me era atu.

He mea nui ki: I te wa tuatahi ka whakarewahia e koe te taputapu whakataetae, ka tonohia koe ki te whakauru i tetahi kupuhipa hei wetewete i te putunga. He mea tino nui ki te tiaki i tenei kupuhipa; ka hiahia matou ina whakarite te tūmau CI!

Kua puta mai he konae hou ki te kōpaki tererangi - Matchfile. Whakatuwheratia ki to ētita kuputuhi tino pai ka whakaatu penei:

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

Ka whakakiia e matou ki te penei mena ka hiahia matou ki te whakamahi i te whakataetae a muri ake nei ki te haina i nga hangahanga mo te whakairinga ki Crashlytics me/ranei AppStore, ara, ki te haina i te ID paihere o to tono.

Engari, e maumahara ana matou, i hangaia e matou he ID Kaari Kaari motuhake hei haina i te hanga whakamatautau. No reira, whakatuwheratia te Fastfile ka uru ki tetahi ara hou:

lane :testing_build_for_firebase do

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

end

Tiakina ka tomo ki te tauranga

fastlane testing_build_for_firebase

a ka kite tatou i pehea te hanga a fastlane i tetahi tiwhikete hou ka tuu ki roto i te putunga. Rawe!

Whakatuwherahia te XCode. Inaianei kei a matou te kotaha whakawhiwhinga e tika ana mo te puka Match Development com.company.*, me tohu ki te wahanga Provisioning profile mo nga whaainga AmazingApp me AmazingAppUITests.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Ka noho tonu ki te taapiri i te huarahi mo nga whakamatautau whakahiato. Haere tatou ki putunga he kaupapa mono mo te tere tere e ngawari ake ai te whakarite kaweake ki te Firebase Test Lab me te whai i nga tohutohu.

Me kape-whakapiri mai i te tauira taketake kia penei te ahua o to tatou huarahi 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 nga korero katoa mo te whakatu i te tere tere ki CircleCI, ka tūtohu ahau ki te panui i nga tuhinga whaimana wa, два.

Kaua e wareware ki te taapiri i tetahi mahi hou ki to maatau 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. He aha to tatou pae whakamatautau? Te whakatu Firebase.

Kia heke iho ki te aha i tuhia ai te tuhinga.

Ka whakamahia pea e to taupānga a Firebase i runga i te mahere kore utu, kaore ranei. Kaore he rereke rereke, na te mea mo nga hiahia whakamatautau ka taea e taatau te hanga kaupapa motuhake me te tau kore utu (he pai, tika?)

Ka takiuru matou ki ta matou kaute hanganga (me etahi atu ranei, kaore he mea nui), ka haere ki Wharangi papatohu Firebase. Waihangahia he kaupapa hou ko AmazingAppUITests.

He mea nui ki: I te taahiraa o mua i te Fastfile i te ara firebase_test_lab_ios_xctest me taurite te tawhā gcp_project ki te ingoa kaupapa.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Ko nga tautuhinga taunoa e pai ana ki a maatau.

Kaua e kati te ripa, rēhita i raro i te pūkete kotahi i roto i Gcloud - he mea tika tenei, na te mea ka puta te whakawhitiwhiti korero me Firebase ma te whakamahi i te atanga papatohu gcloud.

Ka hoatu e Google te $300 mo te tau kotahi, i roto i te horopaki o te mahi autotests he rite ki te tau o te whakamahi kore utu o te ratonga. Ka whakauruhia e matou o korero utu, tatari mo te nama whakamatautau $1 ka whiwhi $300 ki to putea. I muri i te tau, ka whakawhiti aunoatia te kaupapa ki te mahere utu kore utu, na reira kaore he take e awangawanga mo te ngaro o te moni.

Me hoki ano tatou ki te ripa me te kaupapa Firebase ka whakawhiti ki te mahere utu utu Blaze - inaianei kei a tatou tetahi mea hei utu mena ka hipa ake te rohe.

I roto i te atanga gcloud, tohua to maatau kaupapa Firebase, tohua te "Directory" tuemi tahua matua me te taapiri i te Cloud Testing API me te Cloud Tools Result API.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Na ka haere ki te tahua "IAM me te whakahaere" -> Nga kaute ratonga -> Waihangahia he putea ratonga. Ka whakawhiwhia e matou nga mana ki te whakatika i te kaupapa.

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Waihangahia he matua API ki te whakatakotoranga JSON

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS

Ka hiahia matou ki te JSON kua tangohia i muri mai, engari mo tenei wa ka whakaarohia e matou te tatūnga Test Lab kua oti.

5. Te whakatu CircleCI

Ka puta ake he patai whaitake - me aha ki nga kupuhipa? Ko te tikanga rereke o te taiao o ta maatau miihini hanga ka awhina i a maatau ki te penapena i o maatau kupuhipa me etahi atu raraunga tairongo. I roto i nga tautuhinga kaupapa CircleCI, tohua nga Taurangi Taiao

Ka whakahaerehia e matou nga whakamatautau taputapu i roto i te Firebase Test Lab. Wāhanga 1: kaupapa iOS
Na ka whakarite i nga taurangi e whai ake nei:

  • kī: GOOGLE_APPLICATION_CREDENTIALS
    uara: kei roto i te konae json o te matua kaute ratonga gcloud
  • kī: MATCH_PASSWORD
    uara: kupuhipa mo te wetewete i te putunga github me nga tiwhikete
  • kī: FASTLANE_PASSWORD
    uara: Kupuhipa pūkete hanganga a Apple Developer Portal

Ka tiakina e matou nga huringa, ka hanga he PR ka tukuna atu ki ta matou kaiarahi roopu mo te arotake.

Ngā putanga

Ko te hua o enei whawhe ngawari, i whakawhiwhia e matou he turanga mahi pai, pumau me te kaha ki te tuhi ataata i runga i te mata o te taputapu i te wa o te whakamatautau. I roto i te tauira whakamatautau, i tohua e ahau te tauira taputapu iPhone X, engari ko te paamu e whakarato ana i nga whiringa nui mai i te huinga o nga tauira rereke me nga putanga iOS.

Ko te waahanga tuarua ka whakatapua ki te taahiraa-i-te-taahiraa o te Firebase Test Lab mo tetahi kaupapa Android.

Source: will.com

Tāpiri i te kōrero