Kuv lub npe yog Dmitry, Kuv ua haujlwm ua tus kuaj hauv lub tuam txhab
Ua ntej qhov no, kuv twb tau sim Firebase Test Lab rau Android thiab nyiam txhua yam, yog li kuv txiav txim siab los sim tso iOS no sim cov txheej txheem ntawm qhov project ntawm tib lub footing. Kuv yuav tsum tau mus rau Google ntau heev thiab tsis yog txhua yam ua haujlwm tawm thawj zaug, yog li kuv txiav txim siab sau ib tsab ntawv qhia rau cov uas tseem tawm tsam.
Yog li, yog tias koj muaj UI xeem ntawm qhov project iOS, koj tuaj yeem sim khiav lawv ntawm cov khoom siv tiag tiag niaj hnub no, ua siab zoo los ntawm Good Corporation. Rau cov neeg nyiam, txais tos rau miv.
Hauv zaj dab neeg, kuv tau txiav txim siab los tsim qee cov ntaub ntawv thawj zaug - ib qho chaw cia khoom ntiag tug ntawm GitHub thiab CircleCI tsim system. Daim ntawv thov npe yog AmazingApp, bundleID yog com.company.amazingapp. Kuv nthuav tawm cov ntaub ntawv no tam sim ntawd kom txo tau qhov tsis meej pem tom ntej.
Yog tias koj siv qee cov kev daws teeb meem hauv koj qhov project txawv, qhia koj qhov kev paub hauv cov lus.
1. Cov kev sim lawv tus kheej
Tsim ib ceg haujlwm tshiab rau kev xeem UI:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Cia peb qhib qhov project hauv XCode thiab tsim lub Hom Phiaj tshiab nrog kev sim UI [XCode -> Cov Ntaub Ntawv -> Tshiab -> Lub Hom Phiaj -> iOS Testing Bundle], muab nws tus kheej piav lub npe AmazingAppUITests.
Mus rau ntu Tsim Phase ntawm qhov tsim Lub Hom Phiaj thiab tshawb xyuas lub xub ntiag ntawm Target Dependencies - AmazingApp, hauv Compile Sources - AmazingAppUITests.swift.
Ib qho kev xyaum zoo yog cais cov kev tsim tsim sib txawv rau hauv cov Schemes cais. Peb tsim ib lub tswv yim rau peb cov kev xeem UI [XCode -> Product -> Scheme -> New Scheme] thiab muab tib lub npe: AmazingAppUITests.
Tsim cov qauv tsim yuav tsum suav nrog Lub Hom Phiaj ntawm daim ntawv thov tseem ceeb - AmazingApp thiab Target UI xeem - AmazingAppUITests - saib screenshot
Tom ntej no, peb tsim kev tsim kho tshiab rau kev xeem UI. Hauv XCode, nyem rau ntawm qhov project file thiab mus rau ntu Cov Ntaub Ntawv. Nyem rau ntawm "+" thiab tsim ib qho kev teeb tsa tshiab, piv txwv li XCtest. Peb yuav xav tau qhov no yav tom ntej txhawm rau zam kev seev cev nrog tambourine thaum nws los txog rau kev kos npe kos npe.
Muaj tsawg kawg yog peb Lub Hom Phiaj hauv koj qhov project: daim ntawv thov tseem ceeb, kev xeem chav tsev (tom qab tag nrho, lawv muaj nyob, puas yog?) thiab Cov Kev Ntsuas UI peb tsim.
Mus rau Lub Hom Phiaj AmazingApp, Tsim Chaw tab, ntu Code Kos Npe Tus Kheej. Rau XCtest configuration, xaiv iOS Developer. Hauv tshooj Code Kos Npe Style, xaiv Phau Ntawv Qhia. Peb tsis tau tsim ib qho profile tsis tau, tab sis peb yuav twv yuav raug hu rov qab rau nws me ntsis tom qab.
Rau Lub Hom Phiaj AmazingAppUITests peb ua tib yam, tab sis nyob rau hauv Cov Khoom Muag Khoom Qhia Kem peb nkag mus rau com.company.amazingappuitests.
2. Teem ib qhov project hauv Apple Developer Program
Mus rau nplooj ntawv Apple Developer Program, mus rau ntu Daim Ntawv Pov Thawj, Tus Kheej & Cov Ntaub Ntawv thiab tom qab ntawd mus rau App IDs kab ntawm cov khoom Identifiers. Tsim tus ID App tshiab hu ua AmazingAppUITests thiab bundleID com.company.amazingappuitests.
Tam sim no peb muaj lub sijhawm los kos npe rau peb cov kev xeem nrog daim ntawv pov thawj cais, tab sis ... Cov txheej txheem rau kev sib sau ua ke rau kev sim yuav tsum sib sau ua ke daim ntawv thov nws tus kheej thiab sib sau ua ke tus neeg sib tw khiav. Raws li, peb tau ntsib teeb meem ntawm kev kos npe rau ob daim ID nrog rau ib qho profile. Hmoov zoo, muaj qhov kev daws teeb meem yooj yim thiab zoo nkauj - Wildcard App ID. Peb rov ua cov txheej txheem rau kev tsim App ID tshiab, tab sis tsis yog siv App ID, xaiv Wildcard App ID raws li hauv screenshot.
Lub sijhawm no, peb tau ua tiav nrog developer.apple.com, tab sis peb yuav tsis txo qhov browser qhov rai. Wb mus
Ib tus neeg nyeem tau txais kev pom zoo pom tias siv cov khoom siv no peb yuav xav tau lub chaw khaws khoom ntiag tug thiab tus account nrog kev nkag mus rau Apple Developer Program thiab Github. Peb tsim (yog tias dheev tsis muaj qhov zoo li no) tus account ntawm daim ntawv [email tiv thaiv], tuaj nrog tus password muaj zog, sau npe nrog developer.apple.com, thiab xaiv nws ua tus tswj xyuas qhov project. Tom ntej no, peb muab tus account nkag mus rau koj lub tuam txhab github repository thiab tsim ib lub chaw khaws khoom ntiag tug tshiab nrog lub npe zoo li AmazingAppMatch.
3. Kev teeb tsa Fastlane thiab cov khoom siv sib tw
Qhib lub davhlau ya nyob twg, mus rau cov ntawv tais ceev tseg nrog qhov project thiab pib fastlane raws li tau hais hauv
$ fastlane init
Koj yuav raug ceeb toom kom xaiv cov kev siv uas muaj. Xaiv qhov kev xaiv thib plaub - phau ntawv teeb tsa.
Qhov project muaj cov npe tshiab fastlane, uas muaj ob cov ntaub ntawv - Appfile thiab Fastfile. Hauv cov ntsiab lus, peb khaws cov ntaub ntawv pabcuam hauv Appfile, thiab sau cov haujlwm hauv Fastfile, hu ua kab hauv Fastlane cov lus siv. Kuv xav kom nyeem cov ntaub ntawv raug cai:
Qhib Appfile hauv koj cov ntawv nyeem uas koj nyiam thiab coj mus rau hauv daim ntawv hauv qab no:
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
Peb rov qab mus rau lub davhlau ya nyob twg thiab raws li phau ntawv qhia peb pib teeb tsa kev sib tw.
$ fastlane match init
$ fastlane match development
Tom ntej no, nkag mus rau cov ntaub ntawv thov - repository, account, password, thiab lwm yam.
Nws yog ib qho tseem ceeb rau: Thaum koj xub pib qhov kev sib tw siv hluav taws xob, koj yuav raug nug kom nkag mus rau tus password kom decrypt lub chaw cia khoom. Nws tseem ceeb heev kom txuag tau tus password no; peb yuav xav tau nws thaum teeb tsa CI server!
Ib cov ntaub ntawv tshiab tau tshwm sim hauv cov ntawv ceev ceev - Matchfile. Qhib nws nyob rau hauv koj nyiam ntawv nyeem editor thiab tso saib nws zoo li no:
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
Peb sau nws raws nraim li no yog tias peb xav siv kev sib tw yav tom ntej los kos npe tsim rau kev tshaj tawm hauv Crashlytics thiab / lossis AppStore, uas yog, kos npe rau pob ID ntawm koj daim ntawv thov.
Tab sis, raws li peb nco qab, peb tsim ib qho tshwj xeeb Wildcard ID los kos npe rau qhov kev sim tsim. Yog li ntawd, qhib Fastfile thiab nkag mus rau txoj kab tshiab:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Txuag thiab nkag mus rau hauv lub davhlau ya nyob twg
fastlane testing_build_for_firebase
thiab peb pom li cas fastlane tsim ib daim ntawv pov thawj tshiab thiab muab tso rau hauv lub repository. Zoo heev!
Qhib XCode. Tam sim no peb muaj cov ntaub ntawv tsim nyog ntawm daim ntawv Match Development com.company.*, uas yuav tsum tau teev nyob rau hauv ntu Kev Pabcuam profile rau AmazingApp thiab AmazingAppUITests lub hom phiaj.
Nws tseem yuav ntxiv txoj kab rau kev sib sau ua ke. Wb mus
Cia peb luam-paste los ntawm tus qauv qub kom peb txoj kab kev sim_build_for_firebase xaus li no:
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
Yog xav paub ntxiv txog kev teeb tsa fastlane hauv CircleCI, kuv xav kom nyeem cov ntaub ntawv raug cai
Tsis txhob hnov ββqab ntxiv ib txoj hauj lwm tshiab rau peb 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. Yuav ua li cas txog peb lub rooj zaum xeem? Teeb tsa Firebase.
Cia wb mus saib seb tsab xov xwm tau sau rau dab tsi.
Tej zaum koj lub app siv Firebase ntawm txoj kev npaj pub dawb, lossis tej zaum tsis yog tag nrho. Tsis muaj qhov sib txawv ntawm qhov tseem ceeb, vim tias kev sim xav tau peb tuaj yeem tsim ib txoj haujlwm cais nrog ib xyoos siv dawb (txias, puas yog?)
Peb nkag mus rau hauv peb tus as khauj infrastructure (lossis lwm yam, nws tsis muaj teeb meem), thiab mus rau
Nws yog ib qho tseem ceeb rau: Hauv cov kauj ruam dhau los hauv Fastfile hauv kab firebase_test_lab_ios_xctest gcp_project parameter yuav tsum phim lub npe project.
Cov kev teeb tsa lub neej ntawd haum peb zoo heev.
Tsis txhob kaw lub tab, sau npe nyob rau hauv tib tus account hauv
Google tau muab $ 300 rau ib xyoos, uas nyob rau hauv cov ntsiab lus ntawm kev ua autotests yog sib npaug rau ib xyoos ntawm kev siv dawb ntawm cov kev pabcuam. Peb sau koj cov ntaub ntawv them nyiaj, tos rau qhov kev xeem debit ntawm $ 1 thiab tau txais $ 300 rau koj tus account. Tom qab ib xyoos, qhov project yuav cia li hloov mus rau qhov kev npaj them nqi pub dawb, yog li tsis tas yuav txhawj xeeb txog kev poob nyiaj.
Cia peb rov qab mus rau lub tab nrog Firebase qhov project thiab hloov mus rau Blaze tariff txoj kev npaj - tam sim no peb muaj ib yam dab tsi los them yog tias qhov kev txwv dhau lawm.
Hauv gcloud interface, xaiv peb qhov phiaj xwm Firebase, xaiv "Directory" cov ntawv qhia zaub mov tseem ceeb thiab ntxiv Cloud Testing API thiab Cloud Tools Result API.
Tom qab ntawd mus rau cov ntawv qhia zaub mov "IAM thiab kev tswj hwm" -> Kev pabcuam nyiaj -> Tsim kev pabcuam nyiaj. Peb muab txoj cai los kho qhov project.
Tsim tus yuam sij API hauv JSON hom
Peb yuav xav tau lub downloaded JSON me ntsis tom qab, tab sis rau tam sim no peb yuav xav txog qhov Test Lab teeb tiav.
5. Kev teeb tsa CircleCI
Cov lus nug tsim nyog tshwm sim - yuav ua li cas nrog tus password? Ib puag ncig sib txawv ntawm peb lub tshuab tsim yuav pab peb khaws peb cov passwords thiab lwm cov ntaub ntawv rhiab. Hauv CircleCI qhov project nqis, xaiv Environment Variables
Thiab teeb tsa cov kev hloov pauv hauv qab no:
- key: GOOGLE_APPLICATION_CREDENTIALS
tus nqi: cov ntsiab lus ntawm json cov ntaub ntawv ntawm gcloud service account key - key: MATCH_PASSWORD
tus nqi: lo lus zais rau decrypting lub github repository nrog daim ntawv pov thawj - key: FASTLANE_PASSWORD
tus nqi: Apple Developer Portal infrastructure account password
Peb khaws cov kev hloov pauv, tsim PR thiab xa mus rau peb pawg thawj coj saib xyuas.
Cov txiaj ntsim tau los
Raws li qhov tshwm sim ntawm cov kev siv yooj yim no, peb tau txais qhov zoo, ruaj khov ua haujlwm nrog lub peev xwm los kaw cov yeeb yaj kiab ntawm lub vijtsam ntaus ntawv thaum lub sijhawm sim. Hauv kev sim piv txwv, kuv tau teev cov qauv iPhone X ntaus ntawv, tab sis kev ua liaj ua teb muab kev xaiv nplua nuj los ntawm kev sib xyaw ua ke ntawm cov qauv sib txawv thiab iOS versions.
Qhov thib ob yuav mob siab rau kev teeb tsa ib ntus ntawm Firebase Test Lab rau qhov project hauv Android.
Tau qhov twg los: www.hab.com