Navê min Dmitry e, ez di pargîdaniyê de wekî ceribandinek dixebitim
Berî vê yekê, min berê ji bo Android-ê Firebase Test Lab ceriband û bi rastî ji her tiştî hez kir, ji ber vê yekê min biryar da ku ez hewl bidim ku binesaziya ceribandina iOS-ê ya projeyê li ser heman bingehê deynim. Min neçar ma ku gelek Google-ê bikim û her tişt ne cara yekem bû, ji ber vê yekê min biryar da ku ji bo kesên ku hîn jî têdikoşin gotarek dersê binivîsim.
Ji ber vê yekê, heke we ceribandinên UI-yê li ser projeyek iOS-ê hene, hûn dikarin berê wan biceribînin ku îro wan li ser cîhazên rastîn bimeşînin, ku ji kerema xwe ji hêla Good Corporation ve hatî peyda kirin. Ji bo kesên eleqedar, bi xêr hatin pisîkê.
Di çîrokê de, min biryar da ku ez li ser hin daneyên destpêkê ava bikim - depoyek taybet a li ser GitHub û pergala avakirina CircleCI. Navê serîlêdanê AmazingApp e, bundleID com.company.amazingapp e. Ez vê daneyê tavilê pêşkêş dikim da ku tevliheviya paşîn kêm bikim.
Ger we di projeya xwe de hin çareseriyên cûda bicîh anîn, ezmûna xwe di şîroveyan de parve bikin.
1. Testên xwe bixwe
Ji bo ceribandinên UI şaxek projeyek nû biafirînin:
$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”
Werin em projeyê di XCode-ê de vekin û bi ceribandinên UI-yê [XCode -> Pelê -> Nû -> Target -> Bundle Testing iOS] Targetek nû biafirînin, û navê xwe-ravekirî AmazingAppUITests bidin wê.
Herin beşa Avakirina Qonaxên Armanca hatî afirandin û hebûna Girêdanên Armanc - AmazingApp, li Çavkaniyên Berhevkar - AmazingAppUITests.swift kontrol bikin.
Pratîkek baş ev e ku vebijarkên cûda yên avakirinê di Schemeyên cihê de veqetînin. Em ji bo ceribandinên xwe yên UI-yê [XCode -> Hilber -> Bername -> Bernameya Nû] nexşeyek diafirînin û heman navî lê didin: AmazingAppUITests.
Avakirina pilana çêkirî pêdivî ye ku Armanca serîlêdana sereke - AmazingApp û ceribandinên UI-ya Target - AmazingAppUITests - li dîmenê binêre
Dûv re, em ji bo ceribandinên UI veavakirinek nû çêdikin. Di XCode de, li ser pelê projeyê bikirtînin û biçin beşa Info. Li ser "+" bikirtînin û mîhengek nû biafirînin, mînakî XCtest. Em ê di pêşerojê de pêdiviya me bi vê bikin da ku dema ku ew tê ser îmzekirina kodê ji dansana bi tembûrê dûr nekevin.
Di projeya we de herî kêm sê Armanc hene: serîlêdana sereke, ceribandinên yekîneyê (piştî hemî, ew hene, rast?) û ceribandinên UI-ya Target ku me afirandin.
Herin Target AmazingApp, tabloya Mîhengên Avakirin, beşa Nasnameya Îmzekirina Kodê. Ji bo veavakirina XCtest, Pêşdebir iOS hilbijêrin. Di beşa Şêweya Îmzekirina Kodê de, Manual hilbijêrin. Me hîn profîlek dabînkirinê çênekiriye, lê bê guman em ê hinekî paşê vegerin ser wê.
Ji bo Target AmazingAppUITests em heman tiştî dikin, lê di stûna Nasnameya Bundle ya Hilberê de em têkevin com.company.amazingappuitests.
2. Sazkirina projeyekê di Bernameya Developer Apple de
Herin rûpela Bernameya Pêşdebirê Apple, biçin beşa Sertîfîka, Nasname & Profîl û dûv re jî li stûna Nasnameyên Appê ya babetê Nasname. Nasnameyek Appê ya nû bi navê AmazingAppUITests û bundleID com.company.amazingappuitests biafirînin.
Naha derfeta me heye ku em ceribandinên xwe bi sertîfîkayek veqetandî îmze bikin, lê... Pêvajoya berhevkirina avahiyek ji bo ceribandinê berhevkirina serîlêdanê bi xwe û berhevkirina ceribandinê pêk tîne. Li gorî vê yekê, em bi pirsgirêka îmzekirina du nasnameyên pakêtê bi yek profîla dabînkirinê re rû bi rû ne. Bi bextewarî, çareseriyek hêsan û elegant heye - Wildcard App ID. Em prosedurê ji bo afirandina Nasnameyek Appê ya nû dubare dikin, lê li şûna Nasnameya Serlêdana Eşkere, Nasnameya App Wildcard wekî di dîmenê de hilbijêrin.
Di vê nuqteyê de, em bi developer.apple.com re dixebitin, lê em ê pencereya gerokê kêm nekin. Ka em herin
Xwendevanek baldar dît ku ji bo karanîna vê amûreyê em ê hewceyê depoyek taybet û hesabek bi gihandina hem Bernameya Pêşdebir a Apple û hem jî Github hewce bikin. Em hesabek formê çêdikin (heke ji nişka ve tiştek wusa tune). [email parastî], şîfreyek bihêz derxînin, wê bi developer.apple.com re tomar bikin, û wê wekî rêveberê projeyê destnîşan bikin. Dûv re, em hesabê xwe bigihînin depoya github a pargîdaniya we û depoyek taybet a nû ya bi navek mîna AmazingAppMatch diafirînin.
3. Sazkirina Fastlane û kargêriya maçê
Termînalek vekin, biçin peldanka bi projeyê re û wekî ku tê destnîşan kirin fastlane dest pê bikin
$ fastlane init
Dê ji we were xwestin ku hûn mîhengên karanîna berdest hilbijêrin. Vebijarka çaremîn hilbijêrin - sazkirina projeya manual.
Projeyek pelrêça nû ya fastlane heye, ku du pelan dihewîne - Appfile û Fastfile. Bi kurtasî, em daneyên karûbarê li Appfile hilînin, û di Fastfile de karan dinivîsin, ku di termînolojiya Fastlane de jê re dibêjin rê. Ez pêşniyar dikim ku belgeya fermî bixwînin:
Appfile di edîtorê nivîsa xweya bijare de vekin û wê bînin forma jêrîn:
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
Em vedigerin termînalê û li gorî manuala fermî em dest bi mîhengkirina maçê dikin.
$ fastlane match init
$ fastlane match development
Dûv re, daneyên daxwazkirî têkevin - depo, hesab, şîfre, hwd.
Ev ji bo me girîng e: Gava ku hûn yekem car kargêriya maçê dest pê bikin, dê ji we were xwestin ku hûn şîfreyek têkevin da ku depoyê deşîfre bikin. Pir girîng e ku hûn vê şîfreyê biparêzin; dema ku servera CI-yê saz bikin em ê hewceyê wê bin!
Pelek nû di peldanka fastlane de xuya bû - Matchfile. Wê di edîtorê nivîsa xweya bijare de vekin û bi vî rengî nîşan bidin:
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
Ger em dixwazin di pêşerojê de ji bo nîşankirina li Crashlytics û/an AppStore avahîyan îmze bikin, ango ji bo îmzekirina nasnameya pakêtê ya serlêdana we, em tam bi vî rengî tijî dikin.
Lê, wekî ku tê bîra me, me ID-ya Wildcard-a taybetî çêkir da ku avakirina ceribandinê îmze bike. Ji ber vê yekê, Fastfile vekin û rêgezek nû têkevin:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
)
end
Hilînin û têkevin termînalê
fastlane testing_build_for_firebase
û em dibînin ka fastlane çawa sertîfîkayek nû afirand û ew xiste depoyê. Ecêb!
XCode vekin. Naha me profîla dabînkirina pêdivî ya forma Match Development com.company.* heye, ku divê di beşa profîla Pêşkêşkirinê de ji bo armancên AmazingApp û AmazingAppUITests were destnîşan kirin.
Ew dimîne ku ji bo berhevkirina ceribandinan rê lê zêde bike. Ka em herin
Ka em ji mînaka orîjînal kopî-paste bikin da ku testing_build_for_firebase riya me bi vî rengî biqede:
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
Ji bo agahdariya bêkêmasî li ser sazkirina fastlane li CircleCI, ez pêşniyar dikim ku belgeya fermî bixwînin
Ji bîr nekin ku karekî nû li config.yml me zêde bikin:
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. Çi li ser kursiya testa me? Sazkirina Firebase.
Ka em herin ser ku gotar ji bo çi hatiye nivîsandin.
Dibe ku sepana we Firebase li ser nexşeyek belaş bikar bîne, an jî dibe ku qet nebe. Bê guman cûdahiyek bingehîn tune, ji ber ku ji bo hewcedariyên ceribandinê em dikarin bi salek karanîna belaş projeyek cûda biafirînin (serxweş, rast?)
Em têkevin hesabê binesaziya xwe (an jî ya din, ne girîng e), û diçin
Ev ji bo me girîng e: Di gava berê ya di Fastfile de di lane firebase_test_lab_ios_xctest de divê parametreya gcp_project bi navê projeyê re hevber bike.
Mîhengên xwerû ji me re pir xweş tê.
Tabloyê negirin, di binê heman hesabê de qeyd bikin
Google ji bo salekê 300 dolar dide, ku di çarçoweya pêkanîna ceribandinên otomatîkî de bi salek karanîna belaş a karûbarê re wekhev e. Em agahdariya dravdana we dinivîsin, li benda debita testê ya $1 bisekinin û 300 $ ji hesabê we re distînin. Piştî salek, proje dê bixweber veguhezîne nexşeyek tarîfê ya belaş, ji ber vê yekê ne hewce ye ku meriv ji windabûna drav a mimkun bitirse.
Ka em bi projeya Firebase vegerin ser tabê û wê veguhezînin plana tarîfê ya Blaze - naha heke sînor derbas bibe tiştek heye ku em bidin.
Di navgîniya gcloud de, projeya meya Firebase hilbijêrin, menuya sereke ya "Rêbername" hilbijêrin û API-ya Testkirina Cloud û API-ya Encama Cloud Tools zêde bikin.
Dûv re biçin menuya "IAM û rêveberî" -> Hesabên karûbar -> Hesabê karûbarê biafirînin. Em mafên sererastkirina projeyê didin.
Bişkojek API-ê di formata JSON de biafirînin
Em ê hinekî dereng hewceyê JSON-a dakêşandî bibin, lê ji bo naha em ê sazkirina Test Lab temam bihesibînin.
5. Sazkirina CircleCI
Pirsek maqûl derdikeve - bi şîfreyan re çi bikin? Mekanîzmaya guhêrbar a jîngehê ya makîneya çêkirina me dê ji me re bibe alîkar ku şîfreyên xwe û daneyên din ên hesas bi ewlehî hilînin. Di mîhengên projeya CircleCI de, Guherbarên Jîngehê hilbijêrin
Û guherbarên jêrîn saz bikin:
- mift: GOOGLE_APPLICATION_CREDENTIALS
nirx: naveroka pelê json ya mifteya hesabê karûbarê gcloud - mift: MATCH_PASSWORD
nirx: şîfreya ji bo deşîfrekirina depoya github bi sertîfîkayan - mift: FASTLANE_PASSWORD
nirx: Şîfreya hesabê binesaziya Portala Pêşdebir a Apple
Em guhertinan hildibijêrin, PR-ê diafirînin û ji bo vekolînê ji serokê tîmê xwe re dişînin.
Encam
Di encama van manîpulasyonên hêsan de, me standek xebatek baş, bi îstîqrar bi şiyana tomarkirina vîdyoyê li ser ekrana cîhazê di dema ceribandinê de wergirt. Di nimûneya testê de, min modela cîhaza iPhone X destnîşan kir, lê çandinî ji berhevoka modelên cihêreng û guhertoyên iOS vebijarkek dewlemend peyda dike.
Beşa duyemîn dê ji bo projeyek Android-ê ji bo sazkirina gav-bi-gav a Firebase Test Lab ve were veqetandin.
Source: www.habr.com