Fy enw i yw Dmitry, rwy'n gweithio fel profwr yn y cwmni
Cyn hyn, roeddwn eisoes wedi rhoi cynnig ar Firebase Test Lab ar gyfer Android ac yn hoff iawn o bopeth, felly penderfynais geisio rhoi seilwaith prawf iOS y prosiect ar yr un sail. Roedd yn rhaid i mi Google llawer ac ni weithiodd popeth allan y tro cyntaf, felly penderfynais ysgrifennu erthygl tiwtorial ar gyfer y rhai sy'n dal i gael trafferth.
Felly, os oes gennych chi brofion UI ar brosiect iOS, gallwch chi eisoes geisio eu rhedeg ar ddyfeisiau go iawn heddiw, a ddarperir yn garedig gan Good Corporation. I'r rhai sydd â diddordeb, croeso i gath.
Yn y stori, penderfynais adeiladu ar rywfaint o ddata cychwynnol - ystorfa breifat ar GitHub a system adeiladu CircleCI. Enw'r cais yw AmazingApp, bundleID yw com.company.amazingapp. Rwy'n cyflwyno'r data hwn ar unwaith i leihau'r dryswch dilynol.
Os gwnaethoch chi roi atebion penodol ar waith yn eich prosiect yn wahanol, rhannwch eich profiad yn y sylwadau.
1. Y profion eu hunain
Creu cangen prosiect newydd ar gyfer profion UI:
$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”
Gadewch i ni agor y prosiect yn XCode a chreu Targed newydd gyda phrofion UI [XCode -> Ffeil -> Newydd -> Targed -> Bwndel Profi iOS], gan roi'r enw hunanesboniadol AmazingAppUITests iddo.
Ewch i adran Adeiladu Cyfnodau o'r Targed a grëwyd a gwiriwch am bresenoldeb Dibyniaethau Targed - AmazingApp, yn Compile Sources - Amazing AppUITests.swift.
Arfer da yw gwahanu opsiynau adeiladu gwahanol yn Gynlluniau ar wahân. Rydym yn creu cynllun ar gyfer ein profion UI [XCode -> Cynnyrch -> Cynllun -> Cynllun Newydd] ac yn rhoi'r un enw iddo: AmazingAppUITests.
Rhaid i adeiladwaith y cynllun a grëwyd gynnwys Targed y prif gymhwysiad - profion AmazingApp a Target UI - AmazingAppUITests - gweler y sgrinlun
Nesaf, rydym yn creu cyfluniad adeilad newydd ar gyfer profion UI. Yn XCode, cliciwch ar ffeil y prosiect ac ewch i'r adran Gwybodaeth. Cliciwch ar “+” a chreu cyfluniad newydd, er enghraifft XCtest. Bydd angen hyn arnom yn y dyfodol er mwyn osgoi dawnsio gyda thambwrîn pan ddaw i arwyddo cod.
Mae o leiaf dri Tharged yn eich prosiect: y prif gais, profion uned (wedi'r cyfan, maen nhw'n bodoli, iawn?) a'r profion UI Targed a grëwyd gennym.
Ewch i Target AmazingApp, tab Build Settings, adran Hunaniaeth Arwyddo Cod. Ar gyfer y ffurfweddiad XCtest, dewiswch iOS Developer. Yn yr adran Arddull Arwyddo Cod, dewiswch Llawlyfr. Nid ydym wedi cynhyrchu proffil darparu eto, ond byddwn yn bendant yn dychwelyd ato ychydig yn ddiweddarach.
Ar gyfer Target AmazingAppUITests rydym yn gwneud yr un peth, ond yn y golofn Dynodydd Bwndel Cynnyrch rydym yn nodi com.company.amazingappuitests.
2. Sefydlu prosiect yn y Rhaglen Datblygwr Apple
Ewch i dudalen Rhaglen Datblygwr Apple, ewch i'r adran Tystysgrifau, Dynodwyr a Phroffiliau ac yna i golofn IDau App yr eitem Dynodwyr. Creu ID App newydd o'r enw AmazingAppUITests a bundleID com.company.amazingappuitests.
Nawr mae gennym ni'r cyfle i lofnodi ein profion gyda thystysgrif ar wahân, ond... Mae'r weithdrefn ar gyfer gosod adeilad at ei gilydd i'w brofi yn golygu cydosod y cais ei hun a chydosod rhedwr y prawf. Yn unol â hynny, rydym yn wynebu'r broblem o lofnodi dau ID bwndel gydag un proffil darparu. Yn ffodus, mae yna ateb syml a chain - Wildcard App ID. Rydyn ni'n ailadrodd y weithdrefn ar gyfer creu ID App newydd, ond yn lle ID App Explicit, dewiswch ID App Cerdyn Gwyllt fel yn y llun.
Ar y pwynt hwn, rydym wedi gorffen gweithio gyda developer.apple.com, ond ni fyddwn yn lleihau ffenestr y porwr. Gadewch i ni fynd i
Sylwodd darllenydd sylwgar er mwyn defnyddio'r cyfleustodau hwn bydd angen ystorfa breifat a chyfrif gyda mynediad i Raglen Datblygwr Apple a Github. Rydym yn creu (os yn sydyn nad oes y fath beth) cyfrif o'r ffurflen [e-bost wedi'i warchod], creu cyfrinair cryf, ei gofrestru gyda developer.apple.com, a'i benodi fel gweinyddwr prosiect. Nesaf, rydyn ni'n rhoi mynediad i'r cyfrif i ystorfa github eich cwmni ac yn creu ystorfa breifat newydd gydag enw fel AmazingAppMatch.
3. Sefydlu Fastlane a'r cyfleustodau paru
Agor terfynell, ewch i'r ffolder gyda'r prosiect a chychwyn fastlane fel y nodir yn
$ fastlane init
Fe'ch anogir i ddewis y ffurfweddiadau defnydd sydd ar gael. Dewiswch y pedwerydd opsiwn - gosod prosiect â llaw.
Mae gan y prosiect fastlane cyfeiriadur newydd, sy'n cynnwys dwy ffeil - Appfile a Fastfile. Yn gryno, rydym yn storio data gwasanaeth yn Appfile, ac yn ysgrifennu swyddi yn Fastfile, a elwir lonydd yn nherminoleg Fastlane. Rwy'n argymell darllen y ddogfennaeth swyddogol:
Agorwch yr Appfile yn eich hoff olygydd testun a dewch ag ef i'r ffurflen ganlynol:
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
Rydyn ni'n dychwelyd i'r derfynell ac yn ôl y llawlyfr swyddogol rydyn ni'n dechrau ffurfweddu'r gêm.
$ fastlane match init
$ fastlane match development
Nesaf, nodwch y data y gofynnwyd amdano - ystorfa, cyfrif, cyfrinair, ac ati.
Pwysig: Pan fyddwch chi'n lansio'r cyfleustodau paru am y tro cyntaf, gofynnir i chi nodi cyfrinair i ddadgryptio'r ystorfa. Mae'n bwysig iawn cadw'r cyfrinair hwn; bydd ei angen arnom wrth sefydlu'r gweinydd CI!
Mae ffeil newydd wedi ymddangos yn y ffolder fastlane - Matchfile. Agorwch ef yn eich hoff olygydd testun a'i arddangos fel hyn:
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
Rydyn ni'n ei lenwi'n union fel hyn os ydyn ni am ddefnyddio paru yn y dyfodol i lofnodi adeiladau i'w harddangos yn Crashlytics a / neu AppStore, hynny yw, i lofnodi ID bwndel eich cais.
Ond, fel y cofiwn, fe wnaethom greu ID Cerdyn Gwyllt arbennig i lofnodi'r prawf adeiladu. Felly, agorwch Fastfile a mynd i mewn i lôn newydd:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
)
end
Cadw a mynd i mewn i'r derfynell
fastlane testing_build_for_firebase
a gwelwn sut y creodd fastlane dystysgrif newydd a'i rhoi yn yr ystorfa. Gwych!
Agor XCode. Nawr mae gennym y proffil darparu angenrheidiol o'r ffurflen Match Development com.company.*, y mae'n rhaid ei nodi yn yr adran Proffil Darpariaeth ar gyfer targedau AmazingApp ac AmazingAppUITests.
Erys i ychwanegu lôn ar gyfer cydosod profion. Gadewch i ni fynd i
Gadewch i ni gopïo-gludo o'r enghraifft wreiddiol fel bod ein lôn profi_build_for_firebase yn edrych fel hyn yn y pen draw:
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
I gael gwybodaeth gyflawn am sefydlu fastlane yn CircleCI, rwy'n argymell darllen y ddogfennaeth swyddogol
Peidiwch ag anghofio ychwanegu tasg newydd at ein 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. Beth am ein mainc prawf? Sefydlu Firebase.
Gadewch i ni ddeall ar gyfer beth ysgrifennwyd yr erthygl.
Efallai bod eich ap yn defnyddio Firebase ar gynllun rhad ac am ddim, neu efallai ddim o gwbl. Nid oes unrhyw wahaniaeth sylfaenol o gwbl, oherwydd ar gyfer anghenion profi gallwn greu prosiect ar wahân gyda blwyddyn o ddefnydd am ddim (cŵl, iawn?)
Rydyn ni'n mewngofnodi i'n cyfrif seilwaith (neu unrhyw un arall, does dim ots), ac yn mynd i
Pwysig: Yn y cam blaenorol yn y Fastfile in lane firebase_test_lab_ios_xctest dylai'r paramedr gcp_project gyfateb i enw'r prosiect.
Mae'r gosodiadau diofyn yn addas i ni yn eithaf da.
Peidiwch â chau'r tab, cofrestrwch o dan yr un cyfrif yn
Mae Google yn rhoi $300 am flwyddyn, sydd yng nghyd-destun cynnal profion awtomatig yn cyfateb i flwyddyn o ddefnydd am ddim o'r gwasanaeth. Rydyn ni'n nodi'ch gwybodaeth talu, yn aros am y debyd prawf o $1 ac yn derbyn $300 i'ch cyfrif. Ar ôl blwyddyn, bydd y prosiect yn cael ei drosglwyddo'n awtomatig i gynllun tariff rhad ac am ddim, felly nid oes angen poeni am y posibilrwydd o golli arian.
Gadewch i ni ddychwelyd i'r tab gyda'r prosiect Firebase a'i drosglwyddo i gynllun tariff Blaze - nawr mae gennym rywbeth i'w dalu os eir y tu hwnt i'r terfyn.
Yn y rhyngwyneb gcloud, dewiswch ein prosiect Firebase, dewiswch yr eitem brif ddewislen “Directory” ac ychwanegwch yr API Profi Cwmwl ac API Canlyniad Cloud Tools.
Yna ewch i'r eitem ddewislen “IAM a gweinyddu” -> Cyfrifon gwasanaeth -> Creu cyfrif gwasanaeth. Rydym yn rhoi hawliau i olygu'r prosiect.
Creu allwedd API mewn fformat JSON
Bydd angen y JSON wedi'i lawrlwytho ychydig yn ddiweddarach, ond am y tro byddwn yn ystyried y gosodiad Test Lab wedi'i gwblhau.
5. Sefydlu CircleCI
Mae cwestiwn rhesymol yn codi - beth i'w wneud gyda chyfrineiriau? Bydd mecanwaith newidiol amgylchedd ein peiriant adeiladu yn ein helpu i storio ein cyfrineiriau a data sensitif arall yn ddiogel. Yn y gosodiadau prosiect CircleCI, dewiswch Newidynnau Amgylcheddol
A gosodwch y newidynnau canlynol:
- allwedd: GOOGLE_APPLICATION_CREDENTIALS
gwerth: cynnwys ffeil json allwedd cyfrif gwasanaeth gcloud - allwedd: MATCH_PASSWORD
gwerth: cyfrinair ar gyfer dadgryptio'r ystorfa github gyda thystysgrifau - allwedd: FASTLANE_PASSWORD
gwerth: cyfrinair cyfrif seilwaith Porth Datblygwr Apple
Rydym yn arbed y newidiadau, yn creu cysylltiadau cyhoeddus ac yn ei anfon at ein harweinydd tîm i'w adolygu.
Canlyniadau
O ganlyniad i'r triniaethau syml hyn, cawsom stondin weithio dda, sefydlog gyda'r gallu i recordio fideo ar sgrin y ddyfais ar adeg y profi. Yn yr enghraifft brawf, nodais fodel dyfais iPhone X, ond mae'r fferm yn darparu detholiad cyfoethog o gyfuniad o wahanol fodelau a fersiynau iOS.
Bydd yr ail ran yn cael ei neilltuo i osod Firebase Test Lab gam wrth gam ar gyfer prosiect Android.
Ffynhonnell: hab.com