From cd0149499b408ad07363ddfa22035641b2997b6b Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 15:21:27 +0200 Subject: [PATCH 01/19] Add e2e iOS workflow --- .github/workflows/e2e-ios.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/e2e-ios.yml diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml new file mode 100644 index 0000000000..1275b90bdc --- /dev/null +++ b/.github/workflows/e2e-ios.yml @@ -0,0 +1,15 @@ +name: E2E iOS + +on: + pull_request: + paths: + - packages/mobile/** + +jobs: + detox: + timeout-minutes: 25 + runs-on: self-hosted + + steps: + - name: Run basic tests + run: npx detox test starter -c ios.sim.debug From 44b43ec1d608354001843b6fd7491334e1f68c3c Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 15:21:59 +0200 Subject: [PATCH 02/19] Dummy mobile change --- .../src/store/init/startConnection/startConnection.saga.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mobile/src/store/init/startConnection/startConnection.saga.ts b/packages/mobile/src/store/init/startConnection/startConnection.saga.ts index a40b4671e1..19c67080e7 100644 --- a/packages/mobile/src/store/init/startConnection/startConnection.saga.ts +++ b/packages/mobile/src/store/init/startConnection/startConnection.saga.ts @@ -35,7 +35,7 @@ function subscribeSocketLifecycle(socket: Socket, dataPort: number) { ReturnType | ReturnType >(emit => { socket.on('connect', async () => { - console.log('websocket connected') + console.log('web socket connected') emit( initActions.setWebsocketConnected({ dataPort, From cc55ab2b19637b4d5330940f55cedd73d01ed1be Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 15:37:41 +0200 Subject: [PATCH 03/19] Navigate to project's directory --- .github/workflows/e2e-ios.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index 1275b90bdc..ba312d660c 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -11,5 +11,8 @@ jobs: runs-on: self-hosted steps: + - name: Run basic tests - run: npx detox test starter -c ios.sim.debug + run: | + cd ~/projects/quiet/packages/mobile + detox test starter -c ios.sim.debug From 88fe644b2996089ef8b5066a3746817a2d6a2735 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 15:41:20 +0200 Subject: [PATCH 04/19] Intentionally break the test --- packages/mobile/e2e/starter.test.js | 2 +- .../src/store/init/startConnection/startConnection.saga.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mobile/e2e/starter.test.js b/packages/mobile/e2e/starter.test.js index 1f63dd13b5..9c6e059573 100644 --- a/packages/mobile/e2e/starter.test.js +++ b/packages/mobile/e2e/starter.test.js @@ -104,7 +104,7 @@ describe('User', () => { await press(element(by.id('send_message_button')), true) - await waitFor(element(by.id("We are no strangers to love"))) + await waitFor(element(by.id("We are no strangers to love! You know the rules, and so do I"))) .toBeVisible() .withTimeout(BASIC) diff --git a/packages/mobile/src/store/init/startConnection/startConnection.saga.ts b/packages/mobile/src/store/init/startConnection/startConnection.saga.ts index 19c67080e7..a40b4671e1 100644 --- a/packages/mobile/src/store/init/startConnection/startConnection.saga.ts +++ b/packages/mobile/src/store/init/startConnection/startConnection.saga.ts @@ -35,7 +35,7 @@ function subscribeSocketLifecycle(socket: Socket, dataPort: number) { ReturnType | ReturnType >(emit => { socket.on('connect', async () => { - console.log('web socket connected') + console.log('websocket connected') emit( initActions.setWebsocketConnected({ dataPort, From 9127fe599ee28b5c8008e1e47a280d5f7b1495cf Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 15:49:43 +0200 Subject: [PATCH 05/19] Use checkout and setup project --- .github/workflows/e2e-ios.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index ba312d660c..2adf1cb32e 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -12,6 +12,13 @@ jobs: steps: + - uses: actions/checkout@v4 + + - name: Setup environment + uses: ./.github/actions/setup-env + with: + bootstrap-packages: "@quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle" + - name: Run basic tests run: | cd ~/projects/quiet/packages/mobile From 1d95f098a07788f199607202c7a0903e70f4eb00 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 15:55:30 +0200 Subject: [PATCH 06/19] Use project directory --- .github/workflows/e2e-ios.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index 2adf1cb32e..26e5673041 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -11,6 +11,8 @@ jobs: runs-on: self-hosted steps: + - name: Use project directory + run: cd ~/projects/quiet/packages/mobile - uses: actions/checkout@v4 @@ -20,6 +22,4 @@ jobs: bootstrap-packages: "@quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle" - name: Run basic tests - run: | - cd ~/projects/quiet/packages/mobile - detox test starter -c ios.sim.debug + run: detox test starter -c ios.sim.debug From 16bbbcad1f82e412580107d476414e560a621bb2 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:03:55 +0200 Subject: [PATCH 07/19] Don't reuse setup environment step --- .github/workflows/e2e-ios.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index 26e5673041..e2a52c9f21 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -12,14 +12,14 @@ jobs: steps: - name: Use project directory - run: cd ~/projects/quiet/packages/mobile + run: cd ~/projects/quiet - uses: actions/checkout@v4 - name: Setup environment - uses: ./.github/actions/setup-env - with: - bootstrap-packages: "@quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle" + run: lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle - name: Run basic tests - run: detox test starter -c ios.sim.debug + run: | + cd packages/mobile + detox test starter -c ios.sim.debug From 7bda81ca15918cddfb81cbc8ffe2d4e9e9edfed5 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:05:11 +0200 Subject: [PATCH 08/19] Correct step --- .github/workflows/e2e-ios.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index e2a52c9f21..e9e48779b2 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -16,8 +16,8 @@ jobs: - uses: actions/checkout@v4 - - name: Setup environment - run: lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle + - name: Bootstrap project + run: npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle - name: Run basic tests run: | From fe9b187d85baed5b4297398791789857a7bf89ed Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:06:25 +0200 Subject: [PATCH 09/19] Print location --- .github/workflows/e2e-ios.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index e9e48779b2..fe32906c7e 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -16,6 +16,9 @@ jobs: - uses: actions/checkout@v4 + - name: Print location + run: pwd + - name: Bootstrap project run: npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle From faad43d58a38fed2dbaeddd5619b97600a18b469 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:08:59 +0200 Subject: [PATCH 10/19] Skip path --- .github/workflows/e2e-ios.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index fe32906c7e..e6a33001fe 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -11,14 +11,8 @@ jobs: runs-on: self-hosted steps: - - name: Use project directory - run: cd ~/projects/quiet - - uses: actions/checkout@v4 - - name: Print location - run: pwd - - name: Bootstrap project run: npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle From f08376b969c6c6ddea0508e3e8e1cef360306b35 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:10:34 +0200 Subject: [PATCH 11/19] Install dependencies --- .github/workflows/e2e-ios.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index e6a33001fe..0c7dafcb5c 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -13,8 +13,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Bootstrap project - run: npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle + - name: Install dependencies + run: | + npm i + npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle - name: Run basic tests run: | From 91b53ddd750b86b9b8da0ab5cd74191a1070a110 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:16:49 +0200 Subject: [PATCH 12/19] Add more steps --- .github/workflows/e2e-ios.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index 0c7dafcb5c..fae5f7636c 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -18,7 +18,16 @@ jobs: npm i npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle + - name: Install pods + run: | + cd packages/mobile/ios + pod install + + - name: Build Detox + run: | + cd .. + detox build -c ios.sim.debug + - name: Run basic tests run: | - cd packages/mobile detox test starter -c ios.sim.debug From 9eb843826d2e0ca2c3153970b5fe0a79e3f73481 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:25:48 +0200 Subject: [PATCH 13/19] Point to mobile dir --- .github/workflows/e2e-ios.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index fae5f7636c..6b1e2ba736 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -25,9 +25,10 @@ jobs: - name: Build Detox run: | - cd .. + cd packages/mobile detox build -c ios.sim.debug - name: Run basic tests run: | + cd packages/mobile detox test starter -c ios.sim.debug From 6a65cf15106a9b51321cd1de4df54027a7e8ee01 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:33:41 +0200 Subject: [PATCH 14/19] Dummy change --- packages/mobile/e2e/starter.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mobile/e2e/starter.test.js b/packages/mobile/e2e/starter.test.js index 9c6e059573..88b8ee52ef 100644 --- a/packages/mobile/e2e/starter.test.js +++ b/packages/mobile/e2e/starter.test.js @@ -104,7 +104,7 @@ describe('User', () => { await press(element(by.id('send_message_button')), true) - await waitFor(element(by.id("We are no strangers to love! You know the rules, and so do I"))) + await waitFor(element(by.id("We are no strangers to love! You know the rules, and so do I!"))) .toBeVisible() .withTimeout(BASIC) From e5b426aa01f6e6d21def1c97389618173548d962 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:39:52 +0200 Subject: [PATCH 15/19] Git lfs --- .github/workflows/e2e-ios.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index 6b1e2ba736..6d4945f5ee 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -18,6 +18,11 @@ jobs: npm i npm run lerna bootstrap --scope @quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle + - name: Pull binaries + run: | + git lfs install + git lfs pull + - name: Install pods run: | cd packages/mobile/ios From 11c147ec6ef90420808a0121f78b07a004844dd1 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 16:45:01 +0200 Subject: [PATCH 16/19] Fix test --- packages/mobile/e2e/starter.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mobile/e2e/starter.test.js b/packages/mobile/e2e/starter.test.js index 88b8ee52ef..1f63dd13b5 100644 --- a/packages/mobile/e2e/starter.test.js +++ b/packages/mobile/e2e/starter.test.js @@ -104,7 +104,7 @@ describe('User', () => { await press(element(by.id('send_message_button')), true) - await waitFor(element(by.id("We are no strangers to love! You know the rules, and so do I!"))) + await waitFor(element(by.id("We are no strangers to love"))) .toBeVisible() .withTimeout(BASIC) From ddbb964a9f743e20470383664a3c596e26570df6 Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 17:08:57 +0200 Subject: [PATCH 17/19] Add Detox CI config --- .github/workflows/e2e-ios.yml | 4 ++-- packages/mobile/.detoxrc.js | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index 6d4945f5ee..23536955b0 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -31,9 +31,9 @@ jobs: - name: Build Detox run: | cd packages/mobile - detox build -c ios.sim.debug + detox build -c ios.sim.debug.ci - name: Run basic tests run: | cd packages/mobile - detox test starter -c ios.sim.debug + detox test starter -c ios.sim.debug.ci diff --git a/packages/mobile/.detoxrc.js b/packages/mobile/.detoxrc.js index bc474cbd22..43098872ad 100644 --- a/packages/mobile/.detoxrc.js +++ b/packages/mobile/.detoxrc.js @@ -56,6 +56,12 @@ module.exports = { type: 'iPhone 15 Pro', }, }, + simulator_ci: { + type: 'ios.simulator', + device: { + type: 'iPhone 15' + } + }, attached: { type: 'android.attached', device: { @@ -80,6 +86,16 @@ module.exports = { }, }, }, + 'ios.sim.debug.ci': { + device: 'simulator_ci', + app: 'ios.debug', + artifacts: { + rootDir: './e2e/artifacts/ios', + plugins: { + instruments: 'all', + }, + }, + }, 'ios.sim.storybook': { device: 'simulator', app: 'ios.storybook', From 646eba339fb4766e02333c1fac25b4dbfe7924ab Mon Sep 17 00:00:00 2001 From: siepra Date: Fri, 6 Oct 2023 17:26:06 +0200 Subject: [PATCH 18/19] Decrease timeout --- .github/workflows/e2e-ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index 23536955b0..cea2884ca3 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -7,7 +7,7 @@ on: jobs: detox: - timeout-minutes: 25 + timeout-minutes: 10 runs-on: self-hosted steps: From ba71bd496f777fa16028c0f70bc041787b68a0e7 Mon Sep 17 00:00:00 2001 From: siepra Date: Mon, 9 Oct 2023 10:25:40 +0200 Subject: [PATCH 19/19] Use more labels for runner --- .github/workflows/e2e-ios.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml index cea2884ca3..91c81888e1 100644 --- a/.github/workflows/e2e-ios.yml +++ b/.github/workflows/e2e-ios.yml @@ -8,7 +8,7 @@ on: jobs: detox: timeout-minutes: 10 - runs-on: self-hosted + runs-on: [self-hosted, macOS, ARM64] steps: - uses: actions/checkout@v4