Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Nomen meum est Dmitry, ego tamquam probator in comitatu laboro Scientia MEL. Nuper admodum confeci tractantes cum pluma recenti e Firebase Test Lab β€” scilicet cum instrumentali experimento iOS applicationum utendi vernaculae probationis compage XCUITest.

Priusquam hoc probavi iam Firebase Test Lab pro Android et omnia realiter probaverunt, ergo placuit temptare infrastructuram propositi in eodem pede ponere. Google multum habui et non omnia primum elaborata sunt, itaque constitui te scribere articulum consequat pro iis qui adhuc laborantes sunt.

Quare, si UI probationes in iOS inceptas habes, iam experiri potes eos in realibus machinis hodie currere, benigne a Bono Corporation provisum. Earum curae, excepturi felis.

In historia, constitui me in aliqua initiali notitia aedificare - repositio privata in GitHub et systema CircleCI constructum. Nomen applicationis AmazingApp, bundleID est com.company.amazingapp. Hanc datam statim exhibeo ut confusionem subsequentem minuam.

Si solutiones quasdam in tuo consilio aliter implesti, experientiam tuam in commentis communica.

1. Quod probat se

Novam project ramus ad III probat:

$ git checkout develop
$ git pull
$ git checkout -b β€œfeature/add-ui-tests”

Proiectum in XCode aperiamus et novum signum cum UI probatis condat [XCode -> Lima -> Novum -> Target -> iOS Testis Fasciculum], eique nomen proprium explanatorium AmazingAppUITests.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Vade ad sectionem aedificate Augmenta target creati et deprime praesentia Dependentiae Target - AmazingApp, in Fontes Compile - AmazingAppUITests.swift.

Usus bonus est optiones diversas aedificandi in schemata separatas separare. Facimus rationem pro UI probatis nostris [XCode -> Product -> Scheme -> Nova Scheme] et idem nomen dabimus: AmazingAppUITests.

Constructum creatum consilium debet includere target principalis application - AmazingApp et Target III probat - AmazingAppUITests - vide tortor

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Deinde novam configurationem aedificandi pro UI probationibus creamus. In XCode, preme in fasciculo documenti et vade ad sectionem Info. Deprime "+" et novam configurationem crea, exempli gratia XCtest. Hoc in futuro opus erit ut saltationem cum tympano vitando, cum ad signationem accedat.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Sunt saltem tres scuta in incepto tuo: principale applicationis, unitatis probatio (post omnia, quae sunt, ius?) et scopum UI probationes quas creavimus.

Ad scopum AmazingApp, Occasus tab aedifica, Code Identity signans sectionem. Pro configuratione XC test, elige iOS Developer. In Codice Subscriptione sectioni Style, select Manuale. Profile provisionem nondum generavimus, sed paulo post certum reddemus.

Pro Amazing AppUITests idem facimus, sed in Producto Fasciculus Identifier columna com.company.amazingappuitests ingredimur.

2. Profecti in project in Apple Developer Program

Ite ad paginam programmatum Apple Developer, vade ad Testimonia, Identifiers & Profile sectionem, deinde ad App IDs columnam Identifiorum item. Novam App ID vocavit AmazingAppUITests et bundleID com.company.amazingappuitests.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Nunc facultas est scribendi probationes nostras cum libello separato, sed ... Ratio congregandi aedificandi ad experiendum involvit applicationem ipsam convocandi et cursorem test convocandi. Proinde obvium sumus cum problemate duos fasciculos IDs signandi cum uno cibario profano. Fortunate simplex et elegans solutio est - Wildcard App ID. Iteramus modum procedendi ad novam App ID creandi, sed pro Explicit App ID, elige Wildcard App ID sicut in screenshot.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Hic laboramus cum elit.apple.com, sed fenestram navigatri minimi non dabimus. Eamus in Fastlane documenta site et lege de par utilitas ex operculo ad operimentum.

Attentus lector animadvertit nos hac utilitate utendum esse nobis reposito secretario et ratiocinatione indigere cum accessu ad utrumque Apple Developer Program et Github. Nos (si subito tale non est) rationem formae [Inscriptio protected]ascende tesseram validam, eam cum elit.apple.com subcriptio, et administratorem project. Deinceps rationem accessus ad tuum github repositorium damus et novum repositorium privatum cum nomine sicut AmazingAppMatch creamus.

3. constituendi Fastlane et par utilitate

Aperi terminalem, vade ad folder cum incepto et initialize fastlane ut indicatur officialis manual. Post ingressus imperium

$ fastlane init

Promptus eris ad usum figurarum promptum eligere. Lego quartam optionem - consilium manuale positum.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Proiectum novum fastlanum directorium habet, quod duas tabulas continet - Appfile et Fastfile. In nuce data opera in Appfile condimus, et jobs in Fastfile, vicos in terminologia Fastlane vocato, conscribimus. Suadeo legere documenta publica; tempus, Π΄Π²Π°.

Aperi Appfile in vestri ventus editorem textum et ad hanc formam adduce:

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

Redimus ad terminum et secundum manualem officialem incipimus par configurare.

$ fastlane match init
$ fastlane match development

Deinde intrant data petita - repositio, ratio, tesserae etc.

Est momenti ad: Cum utilitatem par primum deducis, tesseram minutum repositio inire rogaberis. Magni momenti est hanc tesseram salvare, ea cum servo CI statuens indigebimus!

Novus fasciculus in folder fastlane apparuit - Matchfile. Aperi eam in editore tuo dilectionis textui et hoc sic praesta:

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

Extremum hoc modo implemus si velimus uti par in futuro signo aedificat ad ostentationem in Crashlytics et/vel AppStore, id est, fasciculum ID signare applicationis tuae.

Sed, ut meminimus, singularem Wildcard ID creavimus ut test aedificaretur. Aperi ergo Fastfile et ingredere novam laneam;

lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"  # создаСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°Π½Ρ‡ для development сСртификата для подписи тСстовой сборки.
    )

end

Salvum fac et intra in termino

fastlane testing_build_for_firebase

et videmus quomodo fastlane novum libellum condidit et in reposito posuit. Magna!

Apertum XCode. Nunc habemus necessariam provisionem figurae formae Compositus Development com.company.*, quae in sectione profile Provisionis ad AmazingApp et AmazingAppUITests scuta definiri debet.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Reliquum est ut tane ad probationes colligendas addere. Eamus in repositio plugin project pro fastlane quod facilius exportare ad Firebase Test Lab et erigere instructiones sequi.

Exemplar crustulum ex originali exemplo sit ut nostra aneta testing_for_firebase desinens hoc simile intueatur:


 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

Ad integram informationem de fastlane erectionis in Circulo CI, suadeo legendi documenta publica tempus Π΄Π²Π°.

Ne obliviscaris config.yml novo addere negotium:

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. Quid de tribunali tentamus? Erexit Firebase.

Descendamus ad id quod scriptum est.

Fortasse app Firebase in libero consilio utitur, vel fortasse minime. Nulla omnino differentia est fundamentalis, quia ad probationes necessitates singularem consilium cum anno liberi usu (recte frigus) creare possumus.

Causam nostram infrastructuram aperimus (vel alia, non refert), et ite Firebase consolatorium pagina. Novum project nomine AmazingAppUITests crea.

Est momenti ad: In praecedente gradu in fastigio in anathesi test_lab_ios_xctest the gcp_project parametri inserere debet nomini project.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Default occasus nobis satis bene convenit.

Noli claudere tab, subcriptio sub eadem ratione in Gcloud - Haec mensura necessaria est, quia communicatio cum Firebase fit utens gcloud interface consolatur.

Google $ 300 pro anno dat, qui in contextu autotestorum faciendorum aequipollet liber usus servitii. Mercedem tuam ad informationes intramus, experimentum debiti $1 expecta et 300 $ in ratione tua accipias. Post annum, consilium automatice ad liberam tariff consilium transferetur, ut cures de pecuniae iactura non sit necesse est.

Redeamus ad tab cum incepti Firebase eamque ad omisso ardore consilium transferamus - nunc habemus aliquid solvendum si modus exceditur.

In gcloud interface, elige nostrum consilium Firebase, elige "Directorium" tabulam principalem et adde Cloud Testis API et Cloud Tools Result API.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Deinde ad menu item "IAM et administrationem" -> Service rationes -> rationem muneris crea. Iura concedimus ut documentum emendo.

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

Create an API key in JSON format

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project

JSON receptae paulo post opus erit, sed nunc testem Lab paroecialem completum habebimus.

5. Profecti sunt CircleCI'

Rationabilis quaestio oritur - quid cum passwords? Ambitus variabilis machina fabricandi machinae nostrae adiuvabit nos secure tesseras nostras et alia sensitiva notitia. In ambitus ambitus, select Ambitus Variabiles

Testimonia instrumentalia in Firebase Test Lab. Pars I: iOS project
Et pone sequentes variabiles:

  • clavis: GOOGLE_APPLICATION_CREDENTIALS
    valorem: contenta json fasciculi gcloud muneris ratio clavis
  • clavis: MATCH_PASSWORD
    valorem: password pro decrypting github repositio cum libellorum
  • clavis: FASTLANE_PASSWORD
    valorem: Apple Developer Portal infrastructure propter password

Mutationes servamus, PR creamus et ad turmas nostras duc ad recognoscendum mitte.

results

Ex his simplicibus artificiis, bonam et stabilem operam sistere cum facultate video memorare in screen machinali in tempore temptationis recepimus. In exemplo probato, exemplar fabricae iPhone X definivi, sed fundus copiam locupletem praebet ex diversis exemplaribus et iOS versionibus compositum.

Secunda pars destinabitur ad gradum gradatim constitutivum Firebase Test Lab pro project MASCULINUS.

Source: www.habr.com