Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
d2722d7
feat: groups banners now check non existence
mikimandoki Jan 4, 2026
a42590a
feat: add kick and remove messages test
mikimandoki Jan 5, 2026
6f86bb6
fix: new android workflow for add contact
mikimandoki Jan 6, 2026
b0f3949
fix: add uiscrollable for delete group
mikimandoki Jan 6, 2026
4abcf7f
fix: use proper locator for invite contact
mikimandoki Jan 7, 2026
6465648
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Jan 7, 2026
26538f6
feat: add message history and invite account id tests
mikimandoki Jan 8, 2026
063ee59
Merge origin/dev
mikimandoki Jan 8, 2026
74508f1
feat: add promote test
mikimandoki Jan 8, 2026
859e5a0
Merge remote-tracking branch 'origin/main' into feat/manage-members
mikimandoki Jan 8, 2026
deaf2e7
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Jan 9, 2026
fd982b0
chore: use correct qa-tags
mikimandoki Jan 9, 2026
6ff9141
chore: begin implementing new groups locators
mikimandoki Jan 12, 2026
4adc830
chore: weed out message request item locators
mikimandoki Jan 12, 2026
0aedace
feat: add accept message request method
mikimandoki Jan 12, 2026
7fcd8b5
chore: update android notifications screenshot
mikimandoki Jan 16, 2026
0dec36e
fix: remove animation env var from ios caps
mikimandoki Jan 16, 2026
4e2bb7b
feat: add test for background perms modal android
mikimandoki Jan 16, 2026
9a36ea2
chore: use correct locator
mikimandoki Jan 19, 2026
1f42fe4
chore: continue adding locator classes and test steps
mikimandoki Jan 20, 2026
8c7c114
wip: continue adding test.steps
mikimandoki Jan 20, 2026
01ae8a2
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Jan 20, 2026
46dd109
chore: un-break ios 18 simulators
mikimandoki Jan 21, 2026
d790f37
fix: force ipv4 in the qa seeder
mikimandoki Jan 26, 2026
b8b86d8
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Jan 26, 2026
d105075
chore: add test steps to manage member tests
mikimandoki Jan 27, 2026
d97b812
feat: add multi admin leave test
mikimandoki Jan 28, 2026
01435e1
fix: tidy up multi admin leave test
mikimandoki Jan 29, 2026
d381058
feat: add network target input to workflow
mikimandoki Feb 1, 2026
82eee52
feat: write network target to allure report
mikimandoki Feb 1, 2026
93807f8
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 2, 2026
3d6da8a
Merge remote-tracking branch 'origin/main' into feat/manage-members
mikimandoki Feb 2, 2026
d172d9e
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Feb 2, 2026
02c4ea8
chore: update strings
mikimandoki Feb 2, 2026
fe2bf00
chore: update strings
mikimandoki Feb 2, 2026
1600160
fix: address broken tests
mikimandoki Feb 2, 2026
a830f9d
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 2, 2026
929fdbc
Merge remote-tracking branch 'origin/main' into feat/manage-members
mikimandoki Feb 2, 2026
371df50
fix: try ipv4 first when installing deps
mikimandoki Feb 2, 2026
132aeae
chore: bump timeouts
mikimandoki Feb 2, 2026
0c5995f
chore: linting
mikimandoki Feb 2, 2026
3c40b21
feat: add multi admin promotion test
mikimandoki Feb 2, 2026
db767ba
fix: re-add disabling animation on ios
mikimandoki Feb 3, 2026
7e0bfcb
feat: add linked device promote test
mikimandoki Feb 3, 2026
bf60752
fix: use relative heights for scrollUp and scrollDown
mikimandoki Feb 3, 2026
20e2201
fix: use username locator for group info on ios
mikimandoki Feb 3, 2026
d9f8c7d
chore: bump timeouts
mikimandoki Feb 3, 2026
551d113
chore: resolve ipv4 first
mikimandoki Feb 3, 2026
a1e67ac
chore: linting
mikimandoki Feb 3, 2026
d538cf5
Tweaked the locator for group name on iOS
mpretty-cyro Feb 3, 2026
63dfc57
Ran the linter
mpretty-cyro Feb 3, 2026
e1ead28
Merge pull request #89 from session-foundation/fix/ios-group-renaming
mikimandoki Feb 3, 2026
45162ee
chore: fetch qa-seeder from npm again
mikimandoki Feb 3, 2026
7648141
chore: remove local ipv4 hack
mikimandoki Feb 4, 2026
8d0f11c
Revert "chore: remove local ipv4 hack"
mikimandoki Feb 4, 2026
b075ad6
fix: blind scroll to reveal Block on iOS
mikimandoki Feb 4, 2026
a01a3ea
fix: sleep before interacting with UPM
mikimandoki Feb 4, 2026
7d2c31a
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 4, 2026
f1f96be
Merge remote-tracking branch 'origin/main' into feat/manage-members
mikimandoki Feb 4, 2026
20a7baa
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Feb 4, 2026
f7351aa
feat: add dependabot monthly update
mikimandoki Feb 4, 2026
a1da68f
feat: add ban test
mikimandoki Feb 5, 2026
16aebb9
feat: add ban and delete test
mikimandoki Feb 5, 2026
e8aa566
feat: add ban test
mikimandoki Feb 5, 2026
681bdbb
feat: add ban and delete test
mikimandoki Feb 5, 2026
1c9b66e
feat: add device identity to restore account
mikimandoki Feb 6, 2026
9521922
feat: add dependabot updates
mikimandoki Feb 6, 2026
ae8fc1d
fix: ban and unban in one test
mikimandoki Feb 6, 2026
cf47d45
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Feb 9, 2026
2a6669b
chore: bump strings
mikimandoki Feb 9, 2026
4cf1b19
chore: export assertadminisknown method
mikimandoki Feb 9, 2026
0370e5d
feat: ban linked device tests
mikimandoki Feb 9, 2026
8a96589
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Feb 9, 2026
5a56b38
chore: tidy up
mikimandoki Feb 9, 2026
1abf512
fix: check readonly only on ios
mikimandoki Feb 9, 2026
af70b93
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Feb 9, 2026
a5da631
fix: start headless and use sw rendering
mikimandoki Feb 9, 2026
e8cb9e3
Revert "fix: start headless and use sw rendering"
mikimandoki Feb 9, 2026
4fd26a7
chore: add emulator health check
mikimandoki Feb 9, 2026
a88804c
Merge pull request #91 from session-foundation/chore/emulator-health-…
mikimandoki Feb 9, 2026
cfe4677
fix: ban modal strings
mikimandoki Feb 9, 2026
30dd6c9
chore: update landing page screenshot
mikimandoki Feb 9, 2026
6d36e82
fix: wait longer for promotion sent not present
mikimandoki Feb 10, 2026
1c4c78a
Merge remote-tracking branch 'origin/dev' into feat/manage-members
mikimandoki Feb 10, 2026
72eaf98
Merge pull request #82 from session-foundation/feat/manage-members
mikimandoki Feb 10, 2026
85decf7
chore: update string
mikimandoki Feb 11, 2026
e4d89c4
fix: use name in modals
mikimandoki Feb 11, 2026
c521a06
chore: fix modal heading
mikimandoki Feb 11, 2026
e457dce
fix: prevent emulator recovery from hanging
mikimandoki Feb 11, 2026
247bbc7
fix: add perms to reg workflows
mikimandoki Feb 11, 2026
7e6bcf2
fix: just check convo disappears of linked device
mikimandoki Feb 11, 2026
1141a06
chore(deps): bump the monthly-updates group with 13 updates
dependabot[bot] Feb 11, 2026
47113a7
refactor: parallelize linked device leave group
mikimandoki Feb 11, 2026
5c8cc49
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 11, 2026
08fa1dd
chore: satisfy linter
mikimandoki Feb 11, 2026
454c078
Merge pull request #93 from session-foundation/dependabot/npm_and_yar…
mikimandoki Feb 11, 2026
d8bcc6d
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 13, 2026
9ab38d9
feat: make user pro via dev backend
mikimandoki Feb 12, 2026
51116b3
feat: start ios app in post pro mode
mikimandoki Feb 12, 2026
0113d75
feat: test animated display picture upload
mikimandoki Feb 12, 2026
6e32b55
fix: use rainbow gif, sample pixels for animation
mikimandoki Feb 12, 2026
c22f4cb
fix: recovery banner only shows with >2 convos
mikimandoki Feb 12, 2026
f052e5b
fix: android 1.32.0 locator and flow changes
mikimandoki Feb 12, 2026
954dbe6
chore: more restructure/merge errors
mikimandoki Feb 13, 2026
4a782ca
fix: push files from correct location
mikimandoki Feb 13, 2026
b736afb
fix: run allure files from correct dir
mikimandoki Feb 13, 2026
4572f04
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 13, 2026
d02142f
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 13, 2026
3eb2c86
Merge remote-tracking branch 'origin/dev' into feat/pro
mikimandoki Feb 13, 2026
e347841
feat: expand char count tests to cover pro
mikimandoki Feb 13, 2026
99ab2c1
refactor: remove dead code
mikimandoki Feb 15, 2026
d783973
fix: more Android 1.32.0 fixes
mikimandoki Feb 16, 2026
d379105
feat: offset long click gesture
mikimandoki Feb 16, 2026
48d2907
fix: remove duplicate definition
mikimandoki Feb 16, 2026
b810e87
fix: dismiss CTA if present
mikimandoki Feb 16, 2026
bcf6e74
fix: scope secret to ios workflow
mikimandoki Feb 16, 2026
fac2aef
chore: fix submodule command
mikimandoki Feb 16, 2026
be06fa3
chore: linting
mikimandoki Feb 16, 2026
6d858b6
fix: change locators in calls tests
mikimandoki Feb 16, 2026
17822d1
feat: add share in session test
mikimandoki Feb 16, 2026
34292c2
feat: add share in session test
mikimandoki Feb 16, 2026
5b35dda
chore: update screenshots
mikimandoki Feb 17, 2026
346fbd2
fix: adjust pro tests for ios
mikimandoki Feb 17, 2026
5508edc
fix: new media picker locators
mikimandoki Feb 18, 2026
28d65c4
feat: recovery banner tests
mikimandoki Feb 18, 2026
c0a0d83
fix: simplify animated element logic
mikimandoki Feb 18, 2026
57b3970
Merge remote-tracking branch 'origin/dev' into feat/pro
mikimandoki Feb 18, 2026
6cfe2b6
fix: simplify makeAccountPro signature
mikimandoki Feb 18, 2026
4f6717d
chore: update simulators
mikimandoki Feb 18, 2026
4f799bb
chore: update simulators
mikimandoki Feb 18, 2026
302eec9
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 18, 2026
f5a0296
Merge remote-tracking branch 'origin/dev' into feat/pro
mikimandoki Feb 18, 2026
9646f39
fix: remove donate cta workarounds on ios
mikimandoki Feb 18, 2026
37be43e
feat: pro activated cta test
mikimandoki Feb 19, 2026
9450df6
fix: add more defensive emulator health checks
mikimandoki Feb 20, 2026
525691b
chore: linting
mikimandoki Feb 20, 2026
c91d760
refactor: translate stateuser output to user type
mikimandoki Feb 20, 2026
5f139c5
refactor: standardize describelocator
mikimandoki Feb 20, 2026
64ae1cd
feat: add 2-device animated dp test
mikimandoki Feb 20, 2026
4a7d192
Merge remote-tracking branch 'origin/dev' into feat/pro
mikimandoki Feb 20, 2026
77566f0
feat: log capture on test failure
mikimandoki Feb 23, 2026
086b814
chore: rename tests to fit artifact upload rules
mikimandoki Feb 23, 2026
946f0f9
feat: differentiate between device and runner logs in allure
mikimandoki Feb 23, 2026
b001e88
Merge remote-tracking branch 'origin/main' into dev
mikimandoki Feb 23, 2026
404f408
Merge remote-tracking branch 'origin/main' into feat/pro
mikimandoki Feb 23, 2026
b8f64ef
refactor: speed up tests
mikimandoki Feb 23, 2026
427fdad
refactor: parallelize matchAndTapImage
mikimandoki Feb 23, 2026
5cd28de
chore: update comment
mikimandoki Feb 23, 2026
4f14521
chore: trim logs more aggressively
mikimandoki Feb 23, 2026
b0ffb01
fix: wait for empty state to disappear when joining community
mikimandoki Feb 23, 2026
7fe749f
refactor: get rid of disappearing control messages util
mikimandoki Feb 24, 2026
12d795f
fix: more Android 1.32.0 fixes
mikimandoki Feb 24, 2026
b3ce61a
fix: also offset group voice msg more
mikimandoki Feb 24, 2026
28eae1c
feat: pin conversation test
mikimandoki Feb 25, 2026
283d7e2
fix: quicken pinned assertion logic
mikimandoki Feb 25, 2026
28a31be
fix: just use deep equality check
mikimandoki Feb 26, 2026
2a728cf
chore: update jira links
mikimandoki Feb 26, 2026
478e246
feat: pro pin limit tests
mikimandoki Feb 26, 2026
4db538c
chore: copilot review
mikimandoki Feb 26, 2026
ddd5845
Merge remote-tracking branch 'origin/dev' into feat/pro
mikimandoki Feb 26, 2026
003c036
fix: no playwright noise in allure test body
mikimandoki Feb 26, 2026
880e108
fix: give calls more time
mikimandoki Feb 27, 2026
2983e22
fix: before matchAndTapImage, make sure we're on the right screen
mikimandoki Feb 27, 2026
6e5fdb7
fix: iOS adjustments
mikimandoki Feb 27, 2026
bbccdf9
refactor: centralize pro context declaration
mikimandoki Feb 27, 2026
c147791
feat: add verify wrapper for playwright's expect
mikimandoki Feb 27, 2026
d6cd11f
fix: keep patching ios tests
mikimandoki Feb 27, 2026
73265d7
fix: more android tests
mikimandoki Feb 27, 2026
7410981
Merge pull request #96 from session-foundation/feat/pro
mikimandoki Feb 27, 2026
bc2746d
chore(deps): bump the monthly-updates group with 15 updates
dependabot[bot] Mar 1, 2026
e5b5e72
Merge pull request #100 from session-foundation/dependabot/npm_and_ya…
mikimandoki Mar 1, 2026
1807785
feat: workflow input for pro tests
mikimandoki Mar 1, 2026
4501ce8
fix: check allure true
mikimandoki Mar 1, 2026
54b7553
fix: thread grep invert through to list tests action
mikimandoki Mar 1, 2026
30bdaf6
fix: assert() handles async matchers and chained properties
mikimandoki Mar 2, 2026
01c361b
chore: copilot comments
mikimandoki Mar 2, 2026
787bdc9
chore: remove comment
mikimandoki Mar 2, 2026
0c7db30
fix: use correct control message
mikimandoki Mar 2, 2026
2e8ac0a
feat: virtual camera image injection
mikimandoki Mar 5, 2026
d5baaec
feat: add qr code tests
mikimandoki Mar 5, 2026
0eab7cd
fix: emulators must have virtual scene configured
mikimandoki Mar 6, 2026
ab7dc40
chore: linting
mikimandoki Mar 6, 2026
3ec4f5d
chore: add shorthand for mock pro
mikimandoki Mar 6, 2026
a11e57c
fix: add disappearing timer buffer
mikimandoki Mar 6, 2026
bf36482
chore: tidy up allure utils
mikimandoki Mar 6, 2026
30f61d5
fix: always dismiss cta after making account pro
mikimandoki Mar 6, 2026
3752ba0
fix: scroll down where needed on iOS
mikimandoki Mar 6, 2026
4bf0219
fix: platform inconsistencies
mikimandoki Mar 9, 2026
3efbbeb
fix: lfs keychain issues on macos runner and prune report directories
mikimandoki Mar 10, 2026
7a1a620
chore: add file count to prune summary
mikimandoki Mar 10, 2026
61cf167
chore: tidy up prune logging
mikimandoki Mar 10, 2026
57b0fc8
chore: opt into Node 24 for GitHub Actions ahead of June 2026 depreca…
mikimandoki Mar 11, 2026
e8a3727
Merge pull request #101 from session-foundation/feat/qr-codes
mikimandoki Mar 16, 2026
07ff726
fix: close apps on all devices
mikimandoki Mar 16, 2026
e40dc49
fix: use `verify()` over `assert()` to avoid ambiguity
mikimandoki Mar 17, 2026
6afb39e
chore: update readme
mikimandoki Mar 17, 2026
e668c33
fix: ios 2.15.0 tweaks
mikimandoki Mar 18, 2026
7ef45b2
feat: add `clickAndWaitFor` method
mikimandoki Mar 19, 2026
d1e61d5
chore: linting
mikimandoki Mar 19, 2026
b054c12
chore: update strings
mikimandoki Mar 19, 2026
9a03954
fix: update tests for donate appeal
mikimandoki Mar 20, 2026
f07a54b
fix: throw expected/actual in allure msg
mikimandoki Mar 20, 2026
06383e7
chore: linting
mikimandoki Mar 20, 2026
ad031e3
chore: update strings
mikimandoki Mar 24, 2026
b474946
fix: latest android dev changes
mikimandoki Mar 24, 2026
0907195
chore: new screenshots
mikimandoki Mar 24, 2026
3bc6469
feat: community url tests
mikimandoki Mar 26, 2026
2375e55
chore: tidy up readme
mikimandoki Mar 30, 2026
54cfeeb
chore: simplify readme even more
mikimandoki Mar 30, 2026
cae83ad
fix copilot comments
mikimandoki Mar 30, 2026
83403b1
chore: add architecture.md
mikimandoki Mar 30, 2026
2c6b32d
chore: mention patches in architecture
mikimandoki Mar 30, 2026
9bc73ea
chore: lint
mikimandoki Mar 30, 2026
e98ac79
fix: remove all force node 24 env vars
mikimandoki Mar 30, 2026
35488ae
chore: bump pnpm on lint
mikimandoki Mar 30, 2026
90c3890
chore: add test context to architecture
mikimandoki Mar 30, 2026
b30f0e4
Update run/test/utils/create_account.ts
mikimandoki Mar 30, 2026
99f5e53
fix: address PR comments
mikimandoki Mar 30, 2026
e09e6b6
chore: don't run pro tests by default
mikimandoki Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@

ANDROID_APK=/home/yougotthis/Downloads/session-android-universal.apk
IOS_APP_PATH_PREFIX=/home/yougotthis/Downloads/Session.app
SDK_MANAGER_FULL_PATH=/home/yougotthis/Android/Sdk/cmdline-tools/latest/bin/sdkmanager
AVD_MANAGER_FULL_PATH=/home/yougotthis/Android/Sdk/cmdline-tools/latest/bin/avdmanager
EMULATOR_FULL_PATH=/home/yougotthis/Android/Sdk/emulator/emulator
ANDROID_SYSTEM_IMAGE="system-images;android-35;google_atd;x86_64"
APPIUM_ADB_FULL_PATH=/home/yougotthis/Android/sdk/platform-tools/adb
PRINT_TEST_LOGS='true'
PRINT_ONGOING_TEST_LOGS = 1
Expand Down
7 changes: 6 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
run/screenshots/**/*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
135 changes: 85 additions & 50 deletions .github/workflows/android-regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ run-name: '${{ inputs.RISK }} regressions on ${{ github.head_ref || github.ref }
on:
workflow_dispatch:
inputs:
NETWORK_TARGET:
description: 'network target to run the tests on'
required: true
type: choice
options:
- 'devnet'
- 'mainnet'
default: 'devnet'

APK_URL:
description: 'apk url to test (.tar.xz)'
required: true
Expand All @@ -24,14 +33,17 @@ on:
- 'low-risk'
- ''

RUN_PRO_TESTS:
description: 'include Session Pro tests in this run'
required: false
default: false
type: boolean

ALLURE_ENABLED:
description: 'generate allure report'
required: false
default: 'true'
type: choice
options:
- 'true'
- 'false'
default: true
type: boolean

PLAYWRIGHT_RETRIES_COUNT:
description: 'retries of failing tests to do at most'
Expand All @@ -53,6 +65,9 @@ on:
- 'verbose' # Ongoing and failed test logs
default: 'minimal'

permissions:
contents: write

jobs:
android-regression:
runs-on: [self-hosted, linux, X64, qa-android]
Expand All @@ -62,15 +77,19 @@ jobs:
BUILD_NUMBER: ${{ github.event.inputs.BUILD_NUMBER }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CI: 1
ALLURE_ENABLED: ${{ github.event.inputs.ALLURE_ENABLED}}
ALLURE_ENABLED: ${{ github.event.inputs.ALLURE_ENABLED }}
IOS_APP_PATH_PREFIX: '<just_not_empty>'
ANDROID_APK: './extracted/session-android.apk'
APPIUM_ADB_FULL_PATH: '/opt/android/platform-tools/adb'
EMULATOR_FULL_PATH: '/opt/android/emulator/emulator'
ANDROID_SDK_ROOT: '/opt/android'
PLAYWRIGHT_RETRIES_COUNT: ${{ github.event.inputs.PLAYWRIGHT_RETRIES_COUNT }}
_TESTING: 1 # Always hide webdriver logs (@appium/support/ flag)
PRINT_FAILED_TEST_LOGS: ${{ github.event.inputs.LOG_LEVEL != 'minimal' && '1' || '0' }} # Show stdout/stderr if test fails (@session-foundation/playwright-reporter/ flag)
PRINT_ONGOING_TEST_LOGS: ${{ github.event.inputs.LOG_LEVEL == 'verbose' && '1' || '0' }} # Show everything as it happens (@session-foundation/playwright-reporter/ flag)
SOGS_ADMIN_SEED: ${{ secrets.SOGS_ADMIN_SEED }}
PRO_GREP_INVERT: ${{ inputs.RUN_PRO_TESTS != true && '--grep-invert @pro' || '' }}
PRO_INVERT_SUFFIX: ${{ inputs.RUN_PRO_TESTS != true && '|@pro' || '' }}

steps:
- uses: actions/checkout@v6
Expand All @@ -97,57 +116,62 @@ jobs:
run: |
pwd

# Check if devnet is accessible before choosing APK
echo "Checking devnet accessibility for APK selection..."
DEVNET_ACCESSIBLE=false

# Retry logic
for attempt in 1 2 3; do
echo "Devnet check attempt $attempt/3..."
if curl -s --connect-timeout 5 --max-time 10 http://sesh-net.local:1280 >/dev/null 2>&1; then
echo "Devnet is accessible on attempt $attempt"
DEVNET_ACCESSIBLE=true
break
else
echo "Attempt $attempt failed"
if [ $attempt -lt 3 ]; then
echo "Waiting ${attempt}s before retry..."
sleep $attempt
fi
fi
done
NETWORK_TARGET="${{ github.event.inputs.NETWORK_TARGET }}"
echo "Network target: $NETWORK_TARGET"

if [ "$DEVNET_ACCESSIBLE" = "false" ]; then
echo "Devnet is not accessible after 3 attempts"
fi

# Download and extract APK
# Download and extract APK
wget -q -O session-android.apk.tar.xz ${{ github.event.inputs.APK_URL }}
tar xf session-android.apk.tar.xz
mv session-android-*universal extracted

# Choose APK based on devnet accessibility
if ls extracted/*automaticQa.apk 1>/dev/null 2>&1; then
if [ "$DEVNET_ACCESSIBLE" = "true" ]; then
echo "Using AQA build (devnet accessible)"
# Choose APK based on network target
if [ "$NETWORK_TARGET" = "devnet" ]; then
echo "Devnet target - checking devnet accessibility..."
DEVNET_ACCESSIBLE=false

# Retry logic
for attempt in 1 2 3; do
echo "Devnet check attempt $attempt/3..."
if curl -s --connect-timeout 5 --max-time 10 http://sesh-net.local:1280 >/dev/null 2>&1; then
echo "Devnet is accessible on attempt $attempt"
DEVNET_ACCESSIBLE=true
break
else
echo "Attempt $attempt failed"
if [ $attempt -lt 3 ]; then
echo "Waiting ${attempt}s before retry..."
sleep $attempt
fi
fi
done

if [ "$DEVNET_ACCESSIBLE" = "false" ]; then
echo "ERROR: Devnet is not accessible after 3 attempts, but devnet target was selected"
exit 1
fi

# Use AQA build for devnet
if ls extracted/*automaticQa.apk 1>/dev/null 2>&1; then
echo "Using AQA build for devnet"
mv extracted/*automaticQa.apk extracted/session-android.apk
echo "IS_AUTOMATIC_QA=true" >> $GITHUB_ENV
else
echo "AQA build available but devnet not accessible - falling back to regular QA build"
if ls extracted/*qa.apk 1>/dev/null 2>&1; then
mv extracted/*qa.apk extracted/session-android.apk
echo "IS_AUTOMATIC_QA=false" >> $GITHUB_ENV
else
echo "No regular QA build found as fallback"
exit 1
fi
echo "ERROR: No AQA build found for devnet target"
exit 1
fi
elif ls extracted/*qa.apk 1>/dev/null 2>&1; then
echo "Using regular QA build"
mv extracted/*qa.apk extracted/session-android.apk
echo "IS_AUTOMATIC_QA=false" >> $GITHUB_ENV

elif [ "$NETWORK_TARGET" = "mainnet" ]; then
echo "Mainnet target - using regular QA build"
if ls extracted/*qa.apk 1>/dev/null 2>&1; then
mv extracted/*qa.apk extracted/session-android.apk
echo "IS_AUTOMATIC_QA=false" >> $GITHUB_ENV
else
echo "ERROR: No regular QA build found for mainnet target"
exit 1
fi

else
echo "No suitable APK found"
echo "ERROR: Unknown network target: $NETWORK_TARGET"
exit 1
fi

Expand All @@ -162,6 +186,9 @@ jobs:
adb kill-server;
adb start-server;

- name: Apply emulator virtual scene config
run: pnpm setup-virtual-scene

- name: Start emulators from snapshot
shell: bash
run: |
Expand All @@ -174,6 +201,7 @@ jobs:
with:
PLATFORM: ${{ env.PLATFORM }}
RISK: ${{ github.event.inputs.RISK }}
PRO_GREP_INVERT: ${{ env.PRO_GREP_INVERT }}

- name: Run the 1-devices tests ​​with 4 workers
continue-on-error: true
Expand All @@ -186,14 +214,17 @@ jobs:
PRINT_ONGOING_TEST_LOGS: ${{ env.PRINT_ONGOING_TEST_LOGS }}
run: |
pwd
npx playwright test --grep "(?=.*@${PLATFORM})(?=.*@${DEVICES_PER_TEST_COUNT}-devices)(?=.*@${{ github.event.inputs.RISK }})" #Note: this has to be double quotes
npx playwright test --grep "(?=.*@${PLATFORM})(?=.*@${DEVICES_PER_TEST_COUNT}-devices)(?=.*@${{ github.event.inputs.RISK }})" $PRO_GREP_INVERT #Note: this has to be double quotes

- name: Upload results of this run
uses: ./github/actions/upload-test-results
with:
PLATFORM: ${{ env.PLATFORM }}
UPLOAD_IDENTIFIER: 'devices-1-test-run'

- name: Recover emulators if needed
run: pnpm recover-emulators

- name: Run the 2-devices tests ​​with 2 workers
continue-on-error: true
id: devices-2-test-run
Expand All @@ -205,14 +236,17 @@ jobs:
PRINT_ONGOING_TEST_LOGS: ${{ env.PRINT_ONGOING_TEST_LOGS }}
run: |
pwd
npx playwright test --grep "(?=.*@${PLATFORM})(?=.*@${DEVICES_PER_TEST_COUNT}-devices)(?=.*@${{ github.event.inputs.RISK }})" #Note: this has to be double quotes
npx playwright test --grep "(?=.*@${PLATFORM})(?=.*@${DEVICES_PER_TEST_COUNT}-devices)(?=.*@${{ github.event.inputs.RISK }})" $PRO_GREP_INVERT #Note: this has to be double quotes

- name: Upload results of this run
uses: ./github/actions/upload-test-results
with:
PLATFORM: ${{ env.PLATFORM }}
UPLOAD_IDENTIFIER: 'devices-2-test-run'

- name: Recover emulators if needed
run: pnpm recover-emulators

- name: Run the other tests with 1 worker
continue-on-error: true
id: other-devices-test-run
Expand All @@ -224,7 +258,7 @@ jobs:
PRINT_ONGOING_TEST_LOGS: ${{ env.PRINT_ONGOING_TEST_LOGS }}
run: |
pwd
npx playwright test --grep "(?=.*@${PLATFORM})(?=.*@${{ github.event.inputs.RISK }})" --grep-invert "@1-devices|@2-devices" #Note: this has to be double quotes
npx playwright test --grep "(?=.*@${PLATFORM})(?=.*@${{ github.event.inputs.RISK }})" --grep-invert "@1-devices|@2-devices${PRO_INVERT_SUFFIX}" #Note: this has to be double quotes

- name: Generate and publish test report
uses: ./github/actions/generate-publish-test-report
Expand All @@ -237,6 +271,7 @@ jobs:
RISK: ${{github.event.inputs.RISK}}
GITHUB_RUN_NUMBER: ${{ github.run_number }}
GITHUB_RUN_ATTEMPT: ${{ github.run_attempt }}
NETWORK_TARGET: ${{ github.event.inputs.NETWORK_TARGET }}

- name: Upload results of this run
uses: ./github/actions/upload-test-results
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/deploy-gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ jobs:
submodules: 'recursive'

- name: Setup Pages
uses: actions/configure-pages@v5
uses: actions/configure-pages@v6

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@v4
with:
path: '.'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
29 changes: 18 additions & 11 deletions .github/workflows/ios-regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,17 @@ on:
- 'low-risk'
- ''

RUN_PRO_TESTS:
description: 'include Session Pro tests in this run'
required: false
default: false
type: boolean

ALLURE_ENABLED:
description: 'generate allure report'
required: false
default: 'true'
type: choice
options:
- 'true'
- 'false'
default: true
type: boolean

PLAYWRIGHT_RETRIES_COUNT:
description: 'retries of failing tests to do at most'
Expand Down Expand Up @@ -63,6 +66,9 @@ on:
- 'verbose' # All test logs - use with caution!
default: 'minimal'

permissions:
contents: write

jobs:
ios-regression:
runs-on: [self-hosted, macOS]
Expand All @@ -72,20 +78,19 @@ jobs:
BUILD_NUMBER: ${{ github.event.inputs.BUILD_NUMBER }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CI: 1
ALLURE_ENABLED: ${{ github.event.inputs.ALLURE_ENABLED}}
ALLURE_ENABLED: ${{ github.event.inputs.ALLURE_ENABLED }}
IOS_APP_PATH_PREFIX: './extracted/Session.app'
ANDROID_APK: '<just_not_empty>'
APPIUM_ADB_FULL_PATH: '<just_not_empty>'
ANDROID_SDK_ROOT: '<just_not_empty>'
PLAYWRIGHT_RETRIES_COUNT: ${{ github.event.inputs.PLAYWRIGHT_RETRIES_COUNT }}
NETWORK_TARGET: 'mainnet' # iOS only supports mainnet for now
_TESTING: 1 # Always hide webdriver logs (@appium/support/ flag)
PRINT_FAILED_TEST_LOGS: ${{ github.event.inputs.LOG_LEVEL != 'minimal' && '1' || '0' }} # Show stdout/stderr if test fails (@session-foundation/playwright-reporter/ flag)
PRINT_ONGOING_TEST_LOGS: ${{ github.event.inputs.LOG_LEVEL == 'verbose' && '1' || '0' }} # Show everything as it happens (@session-foundation/playwright-reporter/ flag)
PLAYWRIGHT_WORKERS_COUNT: 3 # for iOS, this is the max we can have on our self-hosted runner
SDK_MANAGER_FULL_PATH: '<just_not_empty>'
AVD_MANAGER_FULL_PATH: '<just_not_empty>'
ANDROID_SYSTEM_IMAGE: '<just_not_empty>'
EMULATOR_FULL_PATH: '<just_not_empty>'
SOGS_ADMIN_SEED: ${{ secrets.SOGS_ADMIN_SEED }}
PRO_GREP_INVERT: ${{ inputs.RUN_PRO_TESTS != true && '--grep-invert @pro' || '' }}

steps:
- uses: actions/checkout@v6
Expand Down Expand Up @@ -130,6 +135,7 @@ jobs:
with:
PLATFORM: ${{ env.PLATFORM }}
RISK: ${{ github.event.inputs.RISK }}
PRO_GREP_INVERT: ${{ env.PRO_GREP_INVERT }}

- name: Run the iOS tests​​ (all device counts)
env:
Expand All @@ -139,7 +145,7 @@ jobs:
PRINT_ONGOING_TEST_LOGS: ${{ env.PRINT_ONGOING_TEST_LOGS }}
run: |
pwd
npx playwright test --grep "(?=.*@${PLATFORM})(?=.*@${{ github.event.inputs.RISK }})" #Note: this has to be double quotes
npx playwright test --grep "(?=.*@${PLATFORM})(?=.*@${{ github.event.inputs.RISK }})" $PRO_GREP_INVERT #Note: this has to be double quotes

- name: Generate and publish test report
uses: ./github/actions/generate-publish-test-report
Expand All @@ -152,6 +158,7 @@ jobs:
RISK: ${{github.event.inputs.RISK}}
GITHUB_RUN_NUMBER: ${{ github.run_number }}
GITHUB_RUN_ATTEMPT: ${{ github.run_attempt }}
NETWORK_TARGET: ${{ env.NETWORK_TARGET }}

- name: Upload results of this run
uses: ./github/actions/upload-test-results
Expand Down
Loading
Loading