Lebitso la ka ke Dmitry, ke sebetsa ke le molekoli k'hamphaning
Pele ho mona, ke ne ke se ke lekile Firebase Test Lab bakeng sa Android mme ke hlile ke rata ntho e 'ngoe le e' ngoe, kahoo ke ile ka etsa qeto ea ho leka ho beha lisebelisoa tsa tlhahlobo ea iOS tsa morero ka tsela e tšoanang. Ke ile ka tlameha ho Google haholo mme ha se ntho e 'ngoe le e' ngoe e ileng ea sebetsa ka lekhetlo la pele, kahoo ke ile ka etsa qeto ea ho ngola sengoloa sa thuto bakeng sa ba ntseng ba sokola.
Kahoo, haeba u na le liteko tsa UI morerong oa iOS, u se u ka leka ho li sebelisa ka lisebelisoa tsa 'nete kajeno, tse fanoeng ka mosa ke Good Corporation. Bakeng sa ba thahasellang, amohela katse.
Paleng, ke nkile qeto ea ho aha holim'a lintlha tse ling tsa pele - polokelo ea poraefete ho GitHub le CircleCI. Lebitso la kopo ke AmazingApp, bundleID ke com.company.amazingapp. Ke hlahisa data ena hang-hang ho fokotsa pherekano e latelang.
Haeba u sebelisitse litharollo tse ling morerong oa hau ka tsela e fapaneng, arolelana boiphihlelo ba hau ho maikutlo.
1. Liteko ka botsona
Theha lekala le lecha la projeke bakeng sa liteko tsa UI:
$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”
Ha re bule projeke ho XCode 'me re thehe Target e ncha ka liteko tsa UI [XCode -> File -> New -> Target -> iOS Testing Bundle], re e fe lebitso le itlhalosang AmazingAppUITests.
E-ea karolong ea Build Phase ea Sepheo se entsoeng 'me u hlahlobe boteng ba Target Dependencies - AmazingApp, ho Compile Sources - AmazingAppUITests.swift.
Mokhoa o motle ke ho arola likhetho tse fapaneng tsa ho aha ka li-Scheme tse arohaneng. Re theha leano la liteko tsa rona tsa UI [XCode -> Product -> Scheme -> New Scheme] mme re e fa lebitso le tšoanang: AmazingAppUITests.
Mohaho oa morero o entsoeng o tlameha ho kenyelletsa sepheo sa ts'ebeliso ea mantlha - liteko tsa AmazingApp le Target UI - AmazingAppUITests - bona skrini
Ka mor'a moo, re theha tlhophiso e ncha bakeng sa liteko tsa UI. Ho XCode, tobetsa faeleng ea projeke ebe u ea karolong ea Info. Tobetsa ho "+" 'me u thehe tlhophiso e ncha, mohlala XCtest. Re tla hloka sena nakong e tlang ho qoba ho tantša ka moropa ha ho tluoa tabeng ea ho saena khoutu.
Ho na le bonyane Liphebello tse tharo morerong oa hau: ts'ebeliso ea mantlha, liteko tsa yuniti (ka mor'a moo, li teng, ho joalo?) le liteko tsa Target UI tseo re li entseng.
Eya ho Target AmazingApp, Theha tab ea Litlhophiso, Karolo ea Boitsebiso ba ho Saena Code. Bakeng sa tlhophiso ea XCtest, khetha iOS Developer. Karolong ea Setaele sa ho Saena Khoutu, khetha Manual. Ha re so hlahise profil ea phepelo, empa re tla khutlela ho eona hamorao.
Bakeng sa Target AmazingAppUITests re etsa se ts'oanang, empa ka har'a kholomo ea Sekhetho sa Sehlahisoa re kenya com.company.amazingappuitests.
2. Ho theha morero ho Apple Developer Program
Eya leqepheng la Lenaneo la Moetsi oa Apple, ea karolong ea Li-Certificate, Identifiers & Profiles ebe u ea karolong ea Li-ID tsa App ea ntho ea Li-Identifiers. Theha ID e ncha ea App e bitsoang AmazingAppUITests le bundleID com.company.amazingappuitests.
Hona joale re na le monyetla oa ho saena liteko tsa rona ka setifikeiti se arohaneng, empa ... Mokhoa oa ho bokella mohaho bakeng sa tlhahlobo o kenyelletsa ho bokella kopo ka boeona le ho bokella semathi sa teko. Ka hona, re tobane le bothata ba ho saena li-ID tse peli tse nang le profil e le 'ngoe ea phano. Ka lehlohonolo, ho na le tharollo e bonolo le e ntle - ID ea Wildcard App. Re pheta mokhoa oa ho theha ID e ncha ea App, empa sebakeng sa ID e hlakileng ea App, khetha ID ea Wildcard App joalo ka skrineng.
Mothating ona, re se re qetile ho sebetsa le developer.apple.com, empa re ke ke ra nyenyefatsa fensetere ea sebatli. Ha re eeng ho
'Mali ea hlokolosi o hlokometse hore ho sebelisa sesebelisoa sena re tla hloka polokelo ea poraefete le ak'haonte e nang le phihlello ho Apple Developer Program le Github. Re theha (haeba ka tšohanyetso ho se na ntho e joalo) tlaleho ea foromo [imeile e sirelelitsoe], tla le password e matla, e ngolise ho developer.apple.com, 'me u e khethe e le mookameli oa morero. Ka mor'a moo, re fana ka phihlello ea akhaonto sebakeng sa polokelo ea github ea k'hamphani ea hau mme re theha polokelo e ncha ea poraefete e nang le lebitso le kang AmazingAppMatch.
3. Ho theha Fastlane le ts'ebeliso ea papali
Bula terminal, e ea foldareng e nang le projeke ebe u qala fastlane joalo ka ha ho bonts'itsoe ho
$ fastlane init
U tla khothalletsoa ho khetha lisebelisoa tse fumanehang. Khetha khetho ea bone - ho seta morero oa matsoho.
Morero o na le lenane le lecha la fastlane, le nang le lifaele tse peli - Appfile le Fastfile. Ka bokhutšoanyane, re boloka lintlha tsa lits'ebeletso ho Appfile, 'me re ngola mesebetsi ka Fastfile, e bitsoang lanes ka mantsoe a Fastlane. Ke khothaletsa ho bala litokomane tsa molao:
Bula Appfile ka har'a mohlophisi oa mongolo oo u o ratang 'me u e tlise ka foromo e latelang:
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
Re khutlela ho terminal mme ho latela bukana ea semmuso re qala ho lokisa papali.
$ fastlane match init
$ fastlane match development
Ka mor'a moo, kenya data e batiloeng - polokelo, akhaonto, password, joalo-joalo.
Ho bohlokoa ho: Ha o qala ts'ebeliso ea papali, o tla kopuoa ho kenya phasewete ho hlakola polokelo. Ho bohlokoa haholo ho boloka phasewete ena; re tla e hloka ha re theha seva ea CI!
Faele e ncha e hlahile foldareng ea fastlane - Matchfile. E bule ho sehlophisi sa mongolo seo u se ratang 'me u se hlahise ka tsela ena:
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
Re e tlatsa hantle ka tsela ena haeba re batla ho sebelisa papali nakong e tlang ho saena li-build bakeng sa ponts'o ho Crashlytics le/kapa AppStore, ke hore, ho saena bundle ID ea kopo ea hau.
Empa, joalo ka ha re hopola, re thehile ID e khethehileng ea Wildcard ho saena moaho oa tlhahlobo. Ka hona, bula Fastfile 'me u kenye tsela e ncha:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
)
end
Boloka 'me u kene ka har'a terminal
fastlane testing_build_for_firebase
mme re bona kamoo fastlane a entseng setifikeiti se secha mme a se beha sebakeng sa polokelo. E kholo!
Bula XCode. Hona joale re na le boemo bo hlokahalang ba ho fana ka foromo ea Match Development com.company.*, e tlamehang ho hlalosoa karolong ea Provisioning profil bakeng sa lipehelo tsa AmazingApp le AmazingAppUITests.
E sala e le ho eketsa lane bakeng sa ho bokella liteko. Ha re eeng ho
Ha re kopise ho tsoa mohlaleng oa mantlha e le hore lane testing_build_for_firebase e qetelle e shebahala tjena:
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
Bakeng sa tlhaiso-leseling e felletseng mabapi le ho theha fastlane ho CircleCI, ke khothaletsa ho bala litokomane tsa molao
Se ke oa lebala ho kenyelletsa mosebetsi o mocha ho config.yml ea rona:
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. Ho thoe'ng ka benche ea rona ea liteko? Ho theha Firebase.
Ha re theoheleng tlase hore na sengoloa se ngoletsoe eng.
Mohlomong sesebelisoa sa hau se sebelisa Firebase ho leano la mahala, kapa mohlomong ho hang. Ha ho na phapang ea mantlha, hobane bakeng sa litlhoko tsa tlhahlobo re ka theha projeke e arohaneng ka selemo sa ts'ebeliso ea mahala (e pholile, na?)
Re kena akhaonteng ea rona ea litšebeletso tsa motheo (kapa leha e le efe, ha ho tsotellehe), ebe re ea ho
Ho bohlokoa ho: Mohato o fetileng ho Fastfile in lane firebase_test_lab_ios_xctest parameter ea gcp_project e lokela ho lumellana le lebitso la morero.
Li-setting tsa kamehla li re tšoanela hantle.
Se ke oa koala tab, ngodisa tlasa ak'haonte e le 'ngoe ho
Google e fana ka $ 300 bakeng sa selemo, eo molemong oa ho etsa li-autotests e lekanang le selemo sa ts'ebeliso ea mahala ea ts'ebeletso. Re kenya lintlha tsa hau tsa tefo, re emela tefo ea teko ea $1 ebe re fumana $300 akhaonteng ea hau. Ka mor'a selemo, morero o tla fetisetsoa ka boomo ho moralo oa litefiso tsa mahala, kahoo ha ho hlokahale hore u tšoenyehe ka tahlehelo e ka 'nang ea e-ba teng ea chelete.
Ha re khutlele ho tab ka morero oa Firebase mme re e fetisetse ho moralo oa litefiso tsa Blaze - joale re na le seo re lokelang ho se lefa haeba moeli o fetisitsoe.
Ho sebopeho sa gcloud, khetha projeke ea rona ea Firebase, khetha ntho ea mantlha ea "Directory" 'me u kenye Cloud Testing API le Cloud Tools Result API.
Ebe u ea nthong ea "IAM le tsamaiso" -> Liakhaonto tsa lits'ebeletso -> Theha ak'haonte ea litšebeletso. Re fana ka litokelo tsa ho hlophisa morero.
Theha senotlolo sa API ka mokhoa oa JSON
Re tla hloka JSON e jarollotsoeng nakoana hamorao, empa hajoale re tla nahana ka ho seta ha Test Lab e phethiloe.
5. Ho theha CircleCI
Ho hlaha potso e utloahalang - ho etsa eng ka li-passwords? Mochini o feto-fetohang oa tikoloho oa mochini oa rona o tla re thusa ho boloka li-password tsa rona le lintlha tse ling tsa bohlokoa. Litlhophisong tsa projeke ea CircleCI, khetha Liphetoho tsa Tikoloho
Ebe u theha mefuta e latelang:
- senotlolo: GOOGLE_APPLICATION_CREDENTIALS
boleng: likahare tsa faele ea json ea senotlolo sa akhaonto ea tšebeletso ea gcloud - senotlolo: MATCH_PASSWORD
value: password bakeng sa ho hlakola polokelo ea github ka litifikeiti - senotlolo: FASTLANE_PASSWORD
boleng: password ea akhaonto ea Apple Developer Portal
Re boloka liphetoho, re theha PR mme re e romella ho baetapele ba sehlopha sa rona bakeng sa tlhahlobo.
Liphello
Ka lebaka la mekhoa ena e bonolo, re fumane sebaka se setle, se tsitsitseng sa ho sebetsa se nang le bokhoni ba ho rekota video skrineng sa sesebelisoa nakong ea tlhahlobo. Mohlala oa teko, ke hlalositse mohlala oa sesebelisoa sa iPhone X, empa polasi e fana ka khetho e ruileng ho tsoa ho mefuta e fapaneng ea mefuta le liphetolelo tsa iOS.
Karolo ea bobeli e tla etsoa molemong oa ho hlophisa mohato ka mohato oa Firebase Test Lab bakeng sa projeke ea Android.
Source: www.habr.com