Magacaygu waa Dmitry, waxaan uga shaqeeyaa sidii tijaabiye shirkadda
Taas ka hor, waxaan mar hore isku dayay shaybaarka Imtixaanka Firebase ee Android oo runtii jeclaa wax walba, sidaas darteed waxaan go'aansaday inaan isku dayo inaan ku dhejiyo kaabayaasha imtixaanka iOS ee mashruuca isla jaantuska. Waxaan ku khasbanaaday in aan Google-ka wax badan galo, wax walbana ma shaqeynin markii ugu horreysay, sidaas darteed waxaan go'aansaday in aan u qoro maqaal waxbarasho oo loogu talagalay kuwa weli halganka ku jira.
Markaa, haddii aad haysato tijaabooyinka UI ee mashruuca iOS, waxaad mar hore isku dayi kartaa inaad ku socodsiiso aaladaha dhabta ah maanta, oo ay si naxariis leh u bixiso Shirkadda Wanaagsan. Kuwa xiisaynaya, ku soo dhawoow bisad.
Sheekada dhexdeeda, waxaan go'aansaday inaan ku dhiso qaar ka mid ah xogta bilowga ah - kayd gaar ah oo ku yaal GitHub iyo nidaamka dhismaha CircleCI. Magaca codsigu waa AmazingApp, bundleID waa com.company.amazingapp. Waxaan soo bandhigay xogtan isla markiiba si aan u yareeyo jahwareerka xiga.
Haddii aad u hirgelisay xalal gaar ah mashruucaaga si ka duwan, la wadaag khibradaada faallooyinka.
1. Imtixaanada laftooda
U samee laan mashruuc oo cusub imtixaanada UI:
$ git checkout develop
$ git pull
$ git checkout -b βfeature/add-ui-testsβ
Aan ku furno mashruuca XCode oo aan abuurno Bartilmaameed cusub oo leh imtixaannada UI [XCode -> Faylka -> Cusub -> Bartilmaameedka -> Xidhmada Tijaabada IOS], anagoo siinaya magaca is-sharaxaadda AmazingAppUITests.
Tag qaybta Dhisidda Bartilmaameedka la sameeyay oo hubi joogitaanka Ku-tiirsanaanta Bartilmaameedka - AmazingApp, oo ku jira Ilaha Isku-dhafka ah - AmazingAppUITests.swift.
Dhaqanka wanaagsan ayaa ah in la kala saaro xulashooyinka kala duwan ee dhismaha oo loo beddelo Qorsheyaal gaar ah. Waxaan u abuurnaa nidaam imtixaanadayada UI [XCode -> Product -> Scheme -> Qorshe Cusub] waxaana siinaa isla magac: AmazingAppUITests.
Dhismaha nidaamka la abuuray waa in lagu daraa Bartilmaameedka codsiga ugu weyn - AmazingApp iyo Imtixaannada Target UI - AmazingAppUITests - eeg shaashadda
Marka xigta, waxaan u abuurnaa qaab dhisme cusub oo loogu talagalay imtixaannada UI. Gudaha XCode, dhagsii faylka mashruuca oo aad qaybta macluumaadka. Guji "+" oo samee qaabayn cusub, tusaale ahaan XCtest. Waxaan u baahan doonaa tan mustaqbalka si aan uga fogaano qoob ka ciyaarka dafka marka ay timaado saxiixa koodka.
Waxaa jira ugu yaraan saddex bartilmaameed oo mashruucaaga ah: codsiga ugu muhiimsan, imtixaanada cutubka (ka dib oo dhan, way jiraan, sax?) iyo imtixaanada Target UI ee aan abuurnay.
Tag Target AmazingApp, Dhis Settings tab, Qaybta Aqoonsiga Saxeexa Koodhka. Qaabeynta XCtest, dooro IOS Developer. Qaybta Saxiixa Xeerka, dooro Buugga. Weli maanu samayn profile bixin, laakiin hubaal waanu ku soo noqon doonaa wax yar ka dib.
Bartilmaameedka AmazingAppUITests waxaanu samaynaa si la mid ah, laakiin tiirka Aqoonsiga Xidhmada Alaabta waxaanu galnaa com.company.amazingappuitests.
2. Dejinta mashruuc ee barnaamijka horumarinta Apple
Tag bogga Barnaamijka Horumariyaha Apple, aad qaybta Shahaadooyinka, Aqoonsayaasha & Profiles ka dibna u gudub tiirarka Aqoonsiga App ee shayga Aqoonsiga. Abuur Aqoonsi App cusub oo la yiraahdo AmazingAppUITests iyo bundleID com.company.amazingappuitests.
Hadda waxaan fursad u haysanaa inaan ku saxiixno imtixaannadayada shahaado gooni ah, laakiin... Habka isku-dubbaridka dhismaha imtixaanku wuxuu ku lug leeyahay isku-dubbaridka arjiga laftiisa iyo isku-dubbaridka tijaabiyaha. Sidaa awgeed, waxa ina soo food saartay mushkilad ah saxeexa laba xidhmo oo aqoonsi ah oo leh hal muuqaal bixineed. Nasiib wanaag, waxaa jira xal fudud oo qurux badan - Wildcard App ID. Waxaan ku celineynaa nidaamka abuurista Aqoonsi App cusub, laakiin halkii aad ka heli lahayd Aqoonsiga App-ka cad, dooro Aqoonsiga App-ka Wildcard sida sawirka shaashadda.
Halkaa marka ay marayso, waxa aanu dhamaynay la shaqaynta developer.apple.com, laakiin ma yarayn doono daaqada browserka. Aan aadno
Akhristaha fiiro gaar ah leh ayaa ogaaday in si aan u isticmaalno utility this aan u baahan doono kayd gaar ah iyo akoon gelitaanka labada Barnaamijka Horumarinta Apple iyo Github. Waxaan abuurnaa (haddii si lama filaan ah aysan jirin wax noocaas ah) xisaabta foomka [emailka waa la ilaaliyay], la imow furaha sirta ah ee adag, ku diiwaan geli developer.apple.com, oo u magacaw maamule mashruuc. Marka xigta, waxaan siinaa akoontada marin u helka kaydka github ee shirkaddaada oo aanu abuurno kayd gaar ah oo cusub oo leh magac sida AmazingAppMatch.
3. Dejinta Fastlane iyo utility ciyaarta
Fur terminal, gal galka mashruuca oo bilow fastlane sida ku cad
$ fastlane init
Waxaa laguu sheegi doonaa inaad doorato habaynta isticmaalka ee diyaarsan. Dooro doorashada afraad - habaynta mashruuca gacanta.
Mashruucu wuxuu leeyahay hage cusub oo Fastlane, kaas oo ka kooban laba fayl - Appfile iyo Fastfile. Si kooban, waxaanu ku kaydinaynaa xogta adeega gudaha Appfile, waxaanu ku qornaa shaqooyinka Fastfile, oo loo yaqaan laynka ereybixinta Fastlane. Waxaan ku talinayaa inaad akhrido dukumentiyada rasmiga ah:
Ku fur Appfile-ka tafatiraha qoraalka aad jeceshahay oo keen foomkan:
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
Waxaan ku soo laabaneynaa terminaalka oo sida ku cad buug-gacmeedka rasmiga ah waxaan bilaabeynaa inaan habeyno ciyaarta.
$ fastlane match init
$ fastlane match development
Marka xigta, geli xogta la codsaday - kaydka, akoontiga, furaha sirta ah, iwm.
Waxaa muhiim ah in: Marka ugu horeysa ee aad bilowdo utility ciyaarta, waxaa lagu weydiin doonaa inaad geliso furaha sirta ah si aad u dejiso kaydka. Aad bay muhiim u tahay in la keydiyo erayga sirta ah; waxaan u baahan doonaa marka la dejinayo server-ka CI!
Fayl cusub ayaa ka soo muuqday galka fastlane - Matchfile. Ku fur tifaftiraha qoraalka aad jeceshahay oo u muuji sidatan:
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
Waxaan u buuxineynaa si sax ah haddii aan rabno inaan isticmaalno ciyaarta mustaqbalka si aan u saxiixno dhismayaal lagu soo bandhigayo Crashlytics iyo/ama AppStore, taas oo ah, si aan u saxiixno aqoonsiga xirmada codsigaaga.
Laakiin, sida aan xasuusannahay, waxaan abuurnay aqoonsi Wildcard gaar ah si aan u saxiixno dhismaha tijaabada. Sidaa darteed, fur Fastfile oo geli haad cusub:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠ°Π½Ρ Π΄Π»Ρ development ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
)
end
Kaydi oo geli terminalka
fastlane testing_build_for_firebase
waxaanan aragnaa sida fastlane u abuurtay shahaado cusub oo ku rid bakhaarka. Wayn!
Fur XCode Hadda waxaan haynaa astaanta bixinta lagama maarmaanka ah ee foomka Match Development com.com.*, kaas oo ay tahay in lagu qeexo qaybta profile Bixinta ee bartilmaameedyada AmazingApp iyo AmazingAppUITests.
Way hadhay in lagu daro haad lagu ururiyo imtixaanada. Aan aadno
Aynu koobi ka dhigno tusaalaha asalka ah si haadkayaga test_build_for_firebase uu u dhamaado sidan:
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
Si aad u hesho macluumaad dhammaystiran oo ku saabsan samaynta fastlane gudaha CircleCI, waxaan ku talinayaa inaad akhrido dukumentiyada rasmiga ah
Ha iloobin inaad ku darto hawl cusub config.yml our:
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. Ka waran kursigayaga imtixaanka? Dejinta Firebase.
Aan hoos ugu dhaadhacno waxa maqaalku u qornaa.
Waxaa laga yaabaa in app-kaagu uu isticmaalo Firebase qorshe bilaash ah, ama laga yaabee inuusanbaba. Ma jiro gabi ahaanba farqi aasaasi ah, sababtoo ah baahida tijaabinta waxaan abuuri karnaa mashruuc gaar ah oo leh sanad isticmaal bilaash ah (qabow, sax?)
Waxaan galnaa koontada kaabayaasha (ama mid kale, macno ma leh), oo aad
Waxaa muhiim ah in: Talaabadii hore ee Fastfile ee haadka firebase_test_lab_ios_xctest cabbirka gcp_project waa inuu waafaqaa magaca mashruuca.
Dejinta caadiga ah aad ayey noogu habboon tahay.
Ha xidhin tab, iska diiwaan geli isla xisaabta ku jirta
Google waxa uu bixiyaa $300 sanadkii, taas oo marka la eego samaynta tijaabinta iswada ay u dhiganto sanadka isticmaalka bilaashka ah ee adeega. Waxaanu galnay macluumaadkaaga lacag-bixineed, waxaanu sugaynaa lacag-bixin tijaabo ah oo ah $1 waxaanan ku helnaa $300 akoonkaaga. Sannad ka dib, mashruuca waxaa si toos ah loogu wareejin doonaa qorshe tarif ah oo lacag la'aan ah, markaa looma baahna in laga walwalo khasaaraha suurtagalka ah ee lacag.
Aan ku soo laabano tabka mashruuca Firebase oo aan u wareejino qorshaha tariifada Blaze - hadda waxaan haysanaa wax aan bixino haddii xadka la dhaafo.
Isku xirka gcloud, dooro mashruucayada Firebase, dooro "Hagaha" shayga ugu muhiimsan oo ku dar API Testing Cloud iyo Cloud Tools API.
Kadib tag shayga menu "IAM iyo maamulka" -> Xisaabaadka adeegga -> Abuur akoon adeeg. Waxaan siinaa xuquuqaha lagu hagaajinayo mashruuca.
U samee furaha API qaabka JSON
Waxaan u baahan doonaa JSON la soo dejiyey wax yar ka dib, laakiin hadda waxaan tixgelin doonaa dejinta Shaybaarka Imtixaanka oo dhammaystiran.
5. Dejinta CircleCI
Su'aal macquul ah ayaa soo baxda - maxaa lagu sameeyaa erayga sirta ah? Habka bedbeddelka deegaanka ee mashiinka wax lagu dhiso ayaa naga caawin doona inaan si ammaan ah u xafidno furayaashayada sirta ah iyo xogta kale ee xasaasiga ah. Goobaha mashruuca CircleCI, dooro beddelka deegaanka
Oo deji doorsoomayaasha soo socda:
- fure: GOOGLE_APPLICATION_CREDENTIALS
qiimaha: waxa ku jira faylka json ee furaha koontada adeegga gcloud - furaha: MATCH_PASSWORD
qiimaha: erayga sirta ah ee lagu kala saarayo kaydka github oo wata shahaadooyin - furaha: FASTLANE_PASSWORD
qiimaha: Koontada koontada kaabayaasha Portal Developer Portal
Waxaan badbaadinaa isbeddellada, abuurnaa PR oo u dirnaa hoggaanka kooxdayada si ay dib u eegis ugu sameeyaan.
Natiijooyinka
Natiijadii ka soo baxday khalkhal gelintan fudud, waxaan helnay shaqo wanaagsan oo deggan oo karti u leh in lagu duubo fiidiyowga shaashadda aaladda waqtiga tijaabada. Tusaalaha tijaabada ah, waxaan qeexay nooca aaladda iPhone X, laakiin beertu waxay bixisaa xulasho qani ah oo ka mid ah moodooyinka kala duwan iyo noocyada iOS.
Qaybta labaad waxa loo go'aamin doonaa habaynta tillaabo-tallaabo ee shaybaadhka Tijaabada Firebase ee mashruuca Android.
Source: www.habr.com