ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

МСня Π·ΠΎΠ²ΡƒΡ‚ Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ, я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ тСстировщиком Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ MEL Science. БовсСм Π½Π΅Π΄Π°Π²Π½ΠΎ я Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ со ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ свСТСй Ρ„ΠΈΡ‡Π΅ΠΉ ΠΎΡ‚ Firebase Test Lab β€” Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, с ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ тСстированиСм iOS ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° тСстирования XCUITest.

Π”ΠΎ этого я ΡƒΠΆΠ΅ распробовал Firebase Test Lab для Android ΠΈ ΠΌΠ½Π΅ всС ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ инфраструктуру iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Ρ‚Π΅ ΠΆΠ΅ Ρ€Π΅Π»ΡŒΡΡ‹. ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ ΠΈ Π½Π΅ всС ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, поэтому я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ-Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ всС Π΅Ρ‰Π΅ это прСдстоит.

Π˜Ρ‚Π°ΠΊ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ UI тСсты Π½Π° iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π²Ρ‹ смоТСтС ΡƒΠΆΠ΅ сСгодня ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… дСвайсах, любСзно прСдоставлСнных ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ Π”ΠΎΠ±Ρ€Π°. ЗаинтСрСсованным β€” Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.

Π’ повСствовании я Ρ€Π΅ΡˆΠΈΠ» ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… исходных Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub ΠΈ систСма сборки CircleCI. НазваниС прилоТСния β€” AmazingApp, bundleID β€” com.company.amazingapp. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ я ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ сразу, для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹.

Если Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ β€” Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π² коммСнтариях.

1. Π‘Π°ΠΌΠΈ тСсты

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для UI тСстов:

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

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² XCode ΠΈ создадим Π½ΠΎΠ²ΡƒΡŽ ЦСль (Target) с UI тСстами [XCode -> File -> New -> Target -> iOS Testing Bundle], Π΄Π°Π΅ΠΌ Π΅ΠΉ говорящСС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ AmazingAppUITests.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Build Phases созданного Target ΠΈ провСряСм Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Target Dependencies β€” AmazingApp, Π² Compile Sources β€” AmazingAppUITests.swift.

Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ являСтся Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² сборки Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π‘Ρ…Π΅ΠΌΡ‹ (Schemes). Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ схСму для Π½Π°ΡˆΠΈΡ… UI тСстов [XCode -> Product -> Scheme -> New Scheme] ΠΈ Π΄Π°Π΅ΠΌ Π΅ΠΉ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅: AmazingAppUITests.

Build созданной схСмы Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя Target основного прилоТСния β€” AmazingApp ΠΈ Target UI тСстов β€” AmazingAppUITests β€” см.ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π”Π°Π»Π΅Π΅, создаСм Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ сборки для UI тСстов. Π’ XCode ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ ΠΏΠΎ Ρ„Π°ΠΉΠ»Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Info. КликаСм Π½Π° β€œ+” ΠΈ создаСм Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ XCtest. Π­Ρ‚ΠΎ потрСбуСтся Π½Π°ΠΌ Π² дальнСйшСм, Π΄Π°Π±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ плясок с Π±ΡƒΠ±Π½ΠΎΠΌ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ code signing.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π’ вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Ρ‚Ρ€ΠΈ Target: основноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡŽΠ½ΠΈΡ‚ тСсты (вСдь ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ?) ΠΈ созданный Π½Π°ΠΌΠΈ Target UI тСстов.

Π—Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² Target AmazingApp, Π²ΠΊΠ»Π°Π΄ΠΊΠ° Build Settings, Ρ€Π°Π·Π΄Π΅Π» Code Signing Identity. Для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ XCtest Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ iOS Developer. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Code Signing Style Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Manual. Provisioning profile ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ сгСнСрировали, Π½ΠΎ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Π½Π΅ΠΌΡƒ вСрнСмся.

Для Target AmazingAppUITests Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС, Π½ΠΎ Π² Π³Ρ€Π°Ρ„Ρƒ Product Bundle Identifier вписываСм com.company.amazingappuitests.

2. Настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Apple Developer Program

Π—Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° страницу Apple Developer Program, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π°Π·Π΄Π΅Π» Certificates, Identifiers & Profiles ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π² Π³Ρ€Π°Ρ„Ρƒ App IDs ΠΏΡƒΠ½ΠΊΡ‚Π° Identifiers. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ App ID с ΠΈΠΌΠ΅Π½Π΅ΠΌ AmazingAppUITests ΠΈ bundleID com.company.amazingappuitests.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ наши тСсты ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ сСртификатом, но… ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° сборки Π±ΠΈΠ»Π΄Π° для тСстирования ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ сборку самого прилоТСния ΠΈ сборки Ρ€Π°Π½Π½Π΅Ρ€Π° тСстов. БоотвСтствСнно, ΠΌΡ‹ сталкиваСмся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ подписи Π΄Π²ΡƒΡ… bundle ID ΠΎΠ΄Π½ΠΈΠΌ provisioning profile. Π‘Π»Π°Π³ΠΎ, сущСствуСт простоС ΠΈ элСгантноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ β€” Wildcard App ID. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ App ID, Π½ΠΎ вмСсто Explicit App ID Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Wildcard App ID ΠΊΠ°ΠΊ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

На этом этапС Ρ€Π°Π±ΠΎΡ‚Π° с developer.apple.com ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°, Π½ΠΎ ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ. ИдСм Π½Π° сайт с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Fastlane ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΏΡ€ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ Match ΠΎΡ‚ ΠΊΠΎΡ€ΠΊΠΈ Π΄ΠΎ ΠΊΠΎΡ€ΠΊΠΈ.

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ для использования этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π½Π°ΠΌ понадобится ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ доступ ΠΊΠ°ΠΊ ΠΊ Apple Developer Program, Ρ‚Π°ΠΊ ΠΈ ΠΊ Github. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ (Ссли Π²Π΄Ρ€ΡƒΠ³ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚) Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π²ΠΈΠ΄Π° [email protected], ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Π΅ΠΌ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, рСгистрируСм Π΅Π³ΠΎ Π² developer.apple.com, Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ администратором ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π”Π°Π»Π΅Π΅, Π΄Π°Π΅ΠΌ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρƒ доступ ΠΊ github Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ создаСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Ρ€ΠΎΠ΄Π΅ AmazingAppMatch.

3. Настройка Fastlane ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ match

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ fastlane ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠ°Π½ΡƒΠ°Π»Π΅. ПослС Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

$ fastlane init

Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ доступныС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ использования. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ β€” ручная настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ появилась новая дирСктория fastlane, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π»Π΅ΠΆΠ°Ρ‚ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° β€” Appfile ΠΈ Fastfile. Π’ Π΄Π²ΡƒΡ… словах β€” Π² Appfile ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ слуТСбныС Π΄Π°Π½Π½Ρ‹Π΅, Π° Π² Fastfile прописываСм jobs, Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Fastlane ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹Π΅ lanes. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ: Ρ€Π°Π·, Π΄Π²Π°.

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Appfile Π² любимом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ:

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

ВозвращаСмся Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ ΠΏΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠ°Π½ΡƒΠ°Π»Ρƒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ match.

$ fastlane match init
$ fastlane match development

Π”Π°Π»Π΅Π΅ Π²Π²ΠΎΠ΄ΠΈΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ β€” Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ Ρ‚.Π΄.

Π’Π°ΠΆΠ½ΠΎ: ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° match попросит ввСсти ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ рСпозитория. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π½Π° этапС настройки CI сСрвСра ΠΎΠ½ Π½Π°ΠΌ пригодится!

Π’ ΠΏΠ°ΠΏΠΊΠ΅ fastlane появился Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» β€” Matchfile. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π² любимом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΊ Π²ΠΈΠ΄Ρƒ:

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

ЗаполняСм ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Ρ…ΠΎΡ‚ΠΈΠΌ Π² дальнСйшСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ match для подписи Π±ΠΈΠ»Π΄ΠΎΠ² для Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠΈ Π² Crashlytics ΠΈ/ΠΈΠ»ΠΈ AppStore, Ρ‚.Π΅ для подписи bundle ID вашСго прилоТСния.

Но, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ, для подписи тСстового Π±ΠΈΠ»Π΄Π° ΠΌΡ‹ создали ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Wildcard ID. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Fastfile ΠΈ вписываСм Π½ΠΎΠ²Ρ‹ΠΉ lane:

lane :testing_build_for_firebase do

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

end

БохраняСм, Π²Π²ΠΎΠ΄ΠΈΠΌ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»

fastlane testing_build_for_firebase

ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ fastlane создал Π½ΠΎΠ²Ρ‹ΠΉ сСртификат ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Π΅Π³ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ!

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ XCode. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ provisioning profile Π²ΠΈΠ΄Π° Match Development com.company.*, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² сСкции Provisioning profile для Ρ‚Π°Ρ€Π³Π΅Ρ‚ΠΎΠ² AmazingApp ΠΈ AmazingAppUITests.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ lane для сборки тСстов. ИдСм Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠ»Π°Π³ΠΈΠ½Π° для fastlane, ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ настройку экспорта Π² Firebase Test Lab ΠΈ слСдуСм инструкциям.

ΠšΠΎΠΏΠΈΠΏΠ°ΡΡ‚ΠΈΠΌ ΠΈΠ· исходного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ наш lane testing_build_for_firebase Π² ΠΈΡ‚ΠΎΠ³Π΅ выглядСл Ρ‚Π°ΠΊ:


 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

Для получСния ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ настройкС fastlane Π² CircleCI Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Ρ€Π°Π·, Π΄Π²Π°.

НС Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ наш 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. А ΠΊΠ°ΠΊ ΠΆΠ΅ наш тСстовый стСнд? НастраиваСм Firebase.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ, собствСнно, ΠΊ Ρ‚ΠΎΠΌΡƒ, для Ρ‡Π΅Π³ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈ писалась.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Firebase Π½Π° бСсплатном Ρ‚Π°Ρ€ΠΈΡ„Π½ΠΎΠΌ ΠΏΠ»Π°Π½Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ вовсС. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ для Π½ΡƒΠΆΠ΄ тСстирования ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с Π³ΠΎΠ΄ΠΎΠΌ бСсплатного использования (ΠΊΡ€ΡƒΡ‚ΠΎ, Π΄Π°?)

Логинимся Π² наш инфраструктурный Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ (ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π±Π΅Π· Ρ€Π°Π·Π½ΠΈΡ†Ρ‹), ΠΈ ΠΈΠ΄Π΅ΠΌ Π½Π° страницу консоли Firebase. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ AmazingAppUITests.

Π’Π°ΠΆΠ½ΠΎ: Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС Π² Fastfile Π² lane firebase_test_lab_ios_xctest ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ gcp_project Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ названию ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π”Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ настройки нас Π²ΠΏΠΎΠ»Π½Π΅ ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚.

НС Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ, ΠΏΠΎΠ΄ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠΌ рСгистрируСмся Π² Gcloud β€” это вынуТдСнная ΠΌΠ΅Ρ€Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с Firebase происходит с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйса консоли gcloud.

Google Π΄Π°Ρ€ΠΈΡ‚ 300$ Π½Π° Π³ΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π² контСкстС выполнСния автотСстов эквивалСнтно Π³ΠΎΠ΄Ρƒ бСсплатного использования сСрвиса. Π’Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, доТидаСмся тСстового списания 1$ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 300$ Π½Π° счСт. По ΠΏΡ€ΠΎΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ Π³ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ Π½Π° бСсплатный Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²ΠΎΠ»Π½ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π΅Π½Π΅Π³ Π½Π΅ стоит.

ВСрнСмся Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Firebase ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅ΠΌ Π΅Π³ΠΎ Π½Π° Ρ‚Π°Ρ€ΠΈΡ„Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ Blaze β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π΅ΡΡ‚ΡŒ Ρ‡Π΅ΠΌ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π² случаС ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠΌΠΈΡ‚Π°.

Π’ интСрфСйсС gcloud Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ наш Firebase ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню Β«ΠšΠ°Ρ‚Π°Π»ΠΎΠ³Β» ΠΈ добавляСм Cloud Testing API ΠΈ Cloud Tools Result API.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΏΡƒΠ½ΠΊΡ‚ мСню Β«IAM ΠΈ администрированиС» -> БСрвисныС Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρ‹ -> Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ сСрвисный Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚. Π’Ρ‹Π΄Π°Π΅ΠΌ ΠΏΡ€Π°Π²Π° Π½Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ API ΠΊΠ»ΡŽΡ‡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π‘ΠΊΠ°Ρ‡Π°Π½Π½Ρ‹ΠΉ JSON понадобится Π½Π°ΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅, Π° ΠΏΠΎΠΊΠ° настройку Test Lab Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠΉ.

5. Настройка CircleCI

НазрСваСт Ρ€Π΅Π·ΠΎΠ½Π½Ρ‹ΠΉ вопрос β€” Π° Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с паролями? НадСТно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ наши ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния нашСй Π±ΠΈΠ»Π΄-ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’ настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° CircleCI Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Environment Variables

ЗапускаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π² Firebase Test Lab. Π§Π°ΡΡ‚ΡŒ 1: iOS ΠΏΡ€ΠΎΠ΅ΠΊΡ‚
И Π·Π°Π²ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

  • key: GOOGLE_APPLICATION_CREDENTIALS
    value: содСрТимоС json Ρ„Π°ΠΉΠ»Π° ΠΊΠ»ΡŽΡ‡Π° сСрвисного Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° gcloud
  • key: MATCH_PASSWORD
    value: ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ github рСпозитория с сСртификатами
  • key: FASTLANE_PASSWORD
    value: ΠΏΠ°Ρ€ΠΎΠ»ΡŒ инфраструктурного Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° Apple Developer Portal

БохраняСм измСнСния, создаСм PR ΠΈ отправляСм Π½Π° review своСму Ρ‚ΠΈΠΌΠ»ΠΈΠ΄Ρƒ.

Π˜Ρ‚ΠΎΠ³ΠΈ

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этих Π½Π΅Ρ…ΠΈΡ‚Ρ€Ρ‹Ρ… манипуляций ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ, ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ стСнд с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ записи Π²ΠΈΠ΄Π΅ΠΎ Π½Π° экранС устройства Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ прохоТдСния тСстирования. Π’ тСстовом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я ΡƒΠΊΠ°Π·Π°Π» модСль устройства iPhone X, Π½ΠΎ Ρ„Π΅Ρ€ΠΌΠ° прСдоставляСт Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ· ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ вСрсий iOS.

Вторая Ρ‡Π°ΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ посвящСна пошаговой настройкС Firebase Test Lab для Android ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com