Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
167 commits
Select commit Hold shift + click to select a range
5df59da
uitests pages and tests added
vinotestlio May 4, 2026
0538771
master branch updated
vinotestlio May 4, 2026
656b12f
pull request codn added
vinotestlio May 4, 2026
53d165b
Merge branch 'develop' of https://github.com/bitpay/bitpay-app into t…
vinotestlio May 7, 2026
8c91850
master src merge
vinotestlio May 7, 2026
d0165d7
uitests folder renamed
vinotestlio May 7, 2026
51962ba
test plan added
vinotestlio May 7, 2026
db82530
objectVersion udpated
vinotestlio May 7, 2026
dca0289
recovery phrase removed
vinotestlio May 7, 2026
28ba40e
groups removed
vinotestlio May 11, 2026
715a4d1
pages and tests fixes
vinotestlio May 11, 2026
02035d1
test without building removed
vinotestlio May 11, 2026
4a1c009
Merge branch 'develop' of https://github.com/bitpay/bitpay-app into t…
vinotestlio May 12, 2026
28c4e11
uitests branch added
vinotestlio May 12, 2026
d27faf0
Release build added
vinotestlio May 12, 2026
e9a96fa
bitpayuitests added
vinotestlio May 12, 2026
3c603d7
flows added
vinotestlio May 15, 2026
806b9eb
added test without building
vinotestlio May 15, 2026
c0efcdf
tests added
vinotestlio May 15, 2026
c779db0
test without building removed
vinotestlio May 15, 2026
5d497c7
added system env prod
vinotestlio May 15, 2026
9fcfed8
Merge branch 'develop' of https://github.com/bitpay/bitpay-app into t…
vinotestlio May 18, 2026
6541043
file class names updated
vinotestlio May 18, 2026
9008cf8
test files and names updated
vinotestlio May 18, 2026
3835bc8
added tests in sequential
vinotestlio May 18, 2026
1dd6b53
updated tapAddCryptoButton
vinotestlio May 19, 2026
cdf57fe
time interval updated
vinotestlio May 19, 2026
497fc02
timeout increased
vinotestlio May 20, 2026
7a09c37
time increased to 15mins
vinotestlio May 20, 2026
775ccb6
tap send button update
vinotestlio May 21, 2026
9181ed4
page source attached
vinotestlio May 21, 2026
5806385
send button locator update
vinotestlio May 22, 2026
6012dfd
home page locator updates
vinotestlio May 22, 2026
b68aacf
updated Bitcoin locator
vinotestlio May 25, 2026
aac5830
tap bitcoin updated
vinotestlio May 25, 2026
9741d87
swap test updated
vinotestlio May 25, 2026
a36cd6d
Merge branch 'develop' of https://github.com/bitpay/bitpay-app into t…
vinotestlio May 26, 2026
ca113a3
swap test added
vinotestlio May 26, 2026
807b670
swap test min amount
vinotestlio May 28, 2026
68c79d2
tap on center of screen
vinotestlio May 29, 2026
b92fdf4
step-13 tap continue update
vinotestlio May 29, 2026
dfbe610
swap and buy functions updated
vinotestlio Jun 1, 2026
d0dbb35
swap page pbxproj
vinotestlio Jun 1, 2026
3b1aae7
Merge branch 'develop' of https://github.com/bitpay/bitpay-app into t…
vinotestlio Jun 17, 2026
55bface
android tests added
vinotestlio Jun 19, 2026
14fbb8e
buy amount updated
vinotestlio Jun 19, 2026
e3bd35a
Allure report integration
vinotestlio Jun 23, 2026
b4c40be
Android tests allure integration and .yml update
vinotestlio Jun 24, 2026
cdbae6d
androidmanifest.xml added
vinotestlio Jun 24, 2026
da4cb4e
mixpanel-react-native sdk version set
vinotestlio Jun 24, 2026
b9b0d69
packaging added
vinotestlio Jun 24, 2026
227fcff
libfjni project update
vinotestlio Jun 24, 2026
631ff2d
min sdk version updated
vinotestlio Jun 25, 2026
c80123c
min sdk and libfbjni update
vinotestlio Jun 25, 2026
c00293f
gradle afterproject
vinotestlio Jun 25, 2026
ecc77b4
compileSdkVersion 36 added
vinotestlio Jun 25, 2026
8d33a17
coroutines.pro after gradle update
vinotestlio Jun 25, 2026
01ec1c3
updated excludes
vinotestlio Jun 25, 2026
18aaaa7
regex coroutines
vinotestlio Jun 25, 2026
5bece86
pick first updated
vinotestlio Jun 25, 2026
129e287
updated from pixel 8 to pixel 6
vinotestlio Jun 25, 2026
991f366
run emulator command updated
vinotestlio Jun 25, 2026
24646c1
run token api added
vinotestlio Jun 25, 2026
437d2b0
Allure results yml update
vinotestlio Jun 25, 2026
c3bdfc5
launch app update and logcat
vinotestlio Jun 25, 2026
752e79e
rerun
vinotestlio Jun 26, 2026
2fefd8a
timeout and logcat added
vinotestlio Jun 26, 2026
11f2c6b
debugging variants added
vinotestlio Jun 26, 2026
faf47fb
metro yml update
vinotestlio Jun 28, 2026
1b9c844
android .yml update with new fixes
vinotestlio Jun 30, 2026
1bd9d64
pull allure results updated
vinotestlio Jun 30, 2026
da48eaa
updated adb pull and allure results copy folder
vinotestlio Jun 30, 2026
0372911
base test clean app added
vinotestlio Jun 30, 2026
2082757
Removed allure video
vinotestlio Jul 1, 2026
783c187
screen recorder import commented
vinotestlio Jul 2, 2026
92a2d84
reset app added
vinotestlio Jul 2, 2026
6764809
reset app removed and yml file reset added
vinotestlio Jul 2, 2026
ef4dc4a
removed reset from all tests
vinotestlio Jul 2, 2026
34257cb
scripts and yml added
vinotestlio Jul 2, 2026
963b188
run tests updated
vinotestlio Jul 2, 2026
928d72c
timeout increased
vinotestlio Jul 2, 2026
59cd7a4
iOS .yml file update
vinotestlio Jul 2, 2026
d598706
enabled ios
vinotestlio Jul 2, 2026
a9052ad
runs on updated from xlarge
vinotestlio Jul 3, 2026
6fa3274
Android added
vinotestlio Jul 3, 2026
dd01e06
failure fixes
vinotestlio Jul 6, 2026
87da7b5
swap test fixes
vinotestlio Jul 7, 2026
c76e876
Merge branch 'develop' of https://github.com/bitpay/bitpay-app into t…
vinotestlio Jul 7, 2026
237077e
android failure fixes
vinotestlio Jul 8, 2026
0249f06
retry rule added
vinotestlio Jul 10, 2026
3f411cb
retry logic and count updated
vinotestlio Jul 14, 2026
44cea65
retry timeout removed
vinotestlio Jul 15, 2026
15fe2d1
enter amount updated
vinotestlio Jul 16, 2026
f7cb8f4
enterAmount function updated
vinotestlio Jul 17, 2026
07f6e00
device cleanup added
vinotestlio Jul 17, 2026
f7094b7
removed -rf node modules
vinotestlio Jul 17, 2026
4e001b6
click btc bitcoin updated
vinotestlio Jul 17, 2026
382128c
locator updated
vinotestlio Jul 17, 2026
3e58087
Min locator updated
vinotestlio Jul 20, 2026
52a2cce
onboarding test fixed
vinotestlio Jul 21, 2026
ed52acc
uitests branch removed from Android
vinotestlio Jul 22, 2026
0560d07
iphone 17 to 16
vinotestlio Jul 22, 2026
f16abdc
updated to iphone 17
vinotestlio Jul 22, 2026
60d2841
build testing updated
vinotestlio Jul 23, 2026
6720d08
.yml updated based on dev ios.yml
vinotestlio Jul 24, 2026
6d55256
list available devices
vinotestlio Jul 24, 2026
999f856
braze version update
vinotestlio Jul 24, 2026
9d54206
github configure
vinotestlio Jul 24, 2026
0349e16
iphone deployment version update
vinotestlio Jul 24, 2026
23c8bb8
xcode version updated
vinotestlio Jul 24, 2026
3614e9e
testlio/ui-tests branch updated
vinotestlio Jul 24, 2026
af1d8fe
video attached
vinotestlio Jul 27, 2026
0bf5908
app flows updated
vinotestlio Aug 11, 2026
639ae7b
swap test fix
vinotestlio Aug 12, 2026
3d30e85
update with https - android
vinotestlio Aug 12, 2026
6921ed3
workflow updated
vinotestlio Aug 12, 2026
901426b
updated Readme
TestlioHaritha Aug 26, 2026
ba2fb47
update on yml file
TestlioHaritha Aug 26, 2026
f20fb1c
fixes for failures
TestlioHaritha Aug 27, 2026
bed0163
fixes
TestlioHaritha Aug 27, 2026
6171437
fix
TestlioHaritha Aug 28, 2026
a293d85
fixes
TestlioHaritha Aug 28, 2026
ab95786
fixes
TestlioHaritha Aug 28, 2026
ac335b8
fixes
TestlioHaritha Aug 28, 2026
e317d0c
updates
TestlioHaritha Aug 28, 2026
dbd4093
fixes
TestlioHaritha Aug 29, 2026
c5981b4
updates
TestlioHaritha Aug 29, 2026
da46b2b
fixes
TestlioHaritha Aug 30, 2026
725bb40
fixes
TestlioHaritha Aug 31, 2026
86ed6ab
updates
TestlioHaritha Aug 31, 2026
2bd341f
fix
TestlioHaritha Sep 1, 2026
33b85d0
fix: Add Pods caching and retry logic for rate limit handling
TestlioHaritha Sep 1, 2026
7d5d0e9
Merge upstream master into testlio/ui-tests
TestlioHaritha Sep 2, 2026
0d2ad8e
merge fixes
TestlioHaritha Sep 2, 2026
994d3e5
hanle logbox popup
TestlioHaritha Sep 3, 2026
387d793
import fixes
TestlioHaritha Sep 3, 2026
322bf84
android fix
TestlioHaritha Sep 3, 2026
a3f9037
android fixes
TestlioHaritha Sep 3, 2026
8c84278
ios fixes to move home
TestlioHaritha Sep 3, 2026
ca40978
ios fix
TestlioHaritha Sep 4, 2026
acd06b3
ios fixes
TestlioHaritha Sep 4, 2026
12fbdf5
Merge branch 'testlio/ui-tests' of https://github.com/vinotestlio/bit…
SaifTestlio Sep 8, 2026
c75df96
Merge branch 'master' into testlio/ui-tests
SaifTestlio Sep 8, 2026
f965245
Update ios-xcuitest.yml
TestlioHaritha Sep 9, 2026
798dcce
update yml file for schedule runs
SaifTestlio Sep 9, 2026
49e221e
update android run for sequencial
SaifTestlio Sep 10, 2026
459e5fd
Merge pull request #1 from vinotestlio/add-schedule-run
TestlioHaritha Sep 10, 2026
6fb5610
ios_local failure fix
TestlioHaritha Sep 10, 2026
3ddda8d
Merge branch 'testlio/ui-tests' of https://github.com/vinotestlio/bit…
TestlioHaritha Sep 10, 2026
4275800
update yml file for schedule runs
SaifTestlio Sep 9, 2026
afc7ff3
update android run for sequencial
SaifTestlio Sep 10, 2026
32075e9
Update ios-xcuitest.yml
TestlioHaritha Sep 9, 2026
5515234
Merge pull request #1 from vinotestlio/add-schedule-run
TestlioHaritha Sep 10, 2026
83667a3
ios_local failure fix
TestlioHaritha Sep 10, 2026
b4352e9
Merge branch 'testlio/ui-tests' of https://github.com/vinotestlio/bit…
TestlioHaritha Sep 10, 2026
5812fd8
Merge upstream/develop into testlio/ui-tests
TestlioHaritha Sep 17, 2026
941d862
Merge branch 'testlio/ui-tests' of https://github.com/vinotestlio/bit…
TestlioHaritha Sep 17, 2026
9035140
handled review comments
TestlioHaritha Sep 18, 2026
3be0570
update yml files
SaifTestlio Sep 18, 2026
c545c1c
updates-comments
TestlioHaritha Sep 25, 2026
076239f
update wallet phrase flow
SaifTestlio Oct 1, 2026
22a1cbd
Merge remote-tracking branch 'upstream/develop' into testlio/ui-tests
SaifTestlio Oct 2, 2026
7552b90
Merge branch 'develop' into testlio/ui-tests
SaifTestlio Oct 2, 2026
a9c5b82
resolving comments
TestlioHaritha Oct 6, 2026
0a5d73f
Merge remote-tracking branch 'upstream/develop' into testlio/ui-tests
TestlioHaritha Oct 6, 2026
fc88e90
fix iOS tests
SaifTestlio Oct 6, 2026
1841b6e
android fixes
TestlioHaritha Oct 8, 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: 2 additions & 1 deletion .env.template
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@ ARBISCAN_API_KEY=
OPSCAN_API_KEY=
BASESCAN_API_KEY=
STATIC_CONTENT_CARDS_ENABLED=
TEST_MODE_NETWORK=
TEST_MODE_NETWORK=
WALLET_PHRASE=
283 changes: 283 additions & 0 deletions .github/workflows/android-espresso-sandbox.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,283 @@
name: Android Espresso E2E Sandbox

on:
workflow_dispatch:
inputs:
environment:
description: "Select the environment (Sandbox or Automation)"
required: true
default: "Sandbox"
type: choice
options:
- Sandbox
- Main_Workspace

concurrency:
group: e2e-android-espresso-${{ github.ref }}
cancel-in-progress: true

jobs:
android-espresso-tests:
name: Android Espresso UI Tests
runs-on: ubuntu-latest
timeout-minutes: 120
env:
ALLURE_RESULTS_DIR: ${{ github.workspace }}/allure-results-raw

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Force HTTPS for GitHub git dependencies
run: |
git config --global url."https://github.com/".insteadOf "git@github.com:"
git config --global url."https://github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://github.com/".insteadOf "git+ssh://git@github.com/"
git config --global url."https://github.com/".insteadOf "git://github.com/"

- name: Rewrite yarn.lock git+ssh URLs to HTTPS
run: |
if [ -f yarn.lock ]; then
sed -i 's#ssh://git@github.com/#https://github.com/#g' yarn.lock
sed -i 's#git+ssh://git@github.com/#https://github.com/#g' yarn.lock
sed -i 's#git@github.com:#https://github.com/#g' yarn.lock
fi

- name: Free disk space
run: |
echo "=== Disk before cleanup ==="
df -h

sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android/sdk/ndk/2[0-6]*
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/share/boost
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
sudo rm -rf /usr/local/share/powershell
sudo rm -rf /usr/share/swift
sudo rm -rf /opt/az
sudo rm -rf /usr/local/share/chromium
sudo rm -rf /usr/share/miniconda

# Docker preloads several GB of images on GitHub-hosted runners
# that this workflow never uses.
docker image prune -af 2>/dev/null || true
docker system prune -af --volumes 2>/dev/null || true

echo "=== Disk after cleanup ==="
df -h

- name: Enable Corepack
run: corepack enable

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.node-version'
cache: 'yarn'

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'

- name: Install dependencies
env:
GIT_TERMINAL_PROMPT: "0"
run: yarn install --frozen-lockfile --network-timeout 600000

- name: Check disk space after dependency install
run: |
echo "=== Disk after yarn install ==="
df -h
echo "=== Largest node_modules subdirs ==="
du -sh node_modules/* 2>/dev/null | sort -rh | head -15

- name: Create env file
env:
ENV_FILE: ${{ secrets.ENV_DEVELOPMENT }}
run: |
echo "$ENV_FILE" > .env.development
# E2E stability: redux-logger serializes the ENTIRE Redux state tree
# to logcat on every dispatched action. A recovery-phrase import fires
# hundreds of actions (per wallet, per chain, per token) and the
# serialization pins the JS thread long enough to blow past the
# Espresso wait budgets, so force dev logging off for the automated
# run regardless of what the secret carries.
sed -i '/^DISABLE_DEVELOPMENT_LOGGING=/d' .env.development
echo "DISABLE_DEVELOPMENT_LOGGING=true" >> .env.development
# E2E stability: index.js only calls LogBox.ignoreAllLogs() when
# IS_MAESTRO === 'true'. Without it, any console.error during bootstrap
# (e.g. "zenledgerInitialize: credentials not found" when the secret
# carries no ZenLedger creds) throws up the RN LogBox "Console Error"
# overlay, which covers the onboarding screen and makes every test
# fail on a missing skip-button. Force the flag on for the automated run.
sed -i '/^IS_MAESTRO=/d' .env.development
echo "IS_MAESTRO=true" >> .env.development

- name: Set Wallet phrase
env:
WALLET_PHRASE: ${{ secrets.WALLET_PHRASE }}
run: yarn set:WalletPhrase

- name: Create Sentry properties
run: |
echo "${{ secrets.SENTRY_PROPERTIES }}" > sentry.properties
echo "${{ secrets.SENTRY_PROPERTIES }}" > android/sentry.properties

- name: Set native config values
run: yarn set:dev

- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ hashFiles('android/**/*.gradle*', 'android/gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: gradle-

- name: Enable KVM for emulator
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm

- name: Start Metro bundler
run: |
npx react-native start &
echo $! > /tmp/metro.pid
npx wait-on http://localhost:8081/status --timeout 60000

- name: Build debug APK and test APK
run: |
cd android
./gradlew assembleDebug assembleDebugAndroidTest \
-PreactNativeArchitectures=x86_64 \
--no-daemon

- name: Check disk space before emulator start
run: |
echo "=== Disk after APK build, before emulator ==="
df -h
echo "=== Gradle cache size ==="
du -sh ~/.gradle/caches 2>/dev/null || true
echo "=== Android build outputs size ==="
du -sh android/app/build 2>/dev/null || true

- name: Start Android emulator and run Espresso tests
uses: reactivecircus/android-emulator-runner@v2
timeout-minutes: 75
with:
api-level: 34
arch: x86_64
profile: pixel_6
avd-name: e2e-emulator
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -memory 4096
disable-animations: true
script: |
adb logcat -c
adb logcat > /home/runner/work/_temp/device-logcat.txt &
echo $! > /tmp/logcat.pid
adb reverse tcp:8081 tcp:8081
bash scripts/run-tests.sh
kill $(cat /tmp/logcat.pid) || true

- name: Stop Metro bundler
if: always()
run: kill $(cat /tmp/metro.pid) || true

- name: Copy Allure results to workspace
if: always()
run: |
mkdir -p allure-results
cp -r "$ALLURE_RESULTS_DIR/." allure-results/ || true
find allure-results -type f || echo "nothing"

- name: Check Allure results were produced
if: always()
run: |
if [ -z "$(find allure-results -name '*.json' 2>/dev/null)" ]; then
echo "::error::No Allure result JSON files found under allure-results/ — failing the job instead of uploading an empty archive to Testlio."
exit 1
else
echo "Allure results found:"
find allure-results -name '*.json'
fi

- name: Upload raw Espresso test results
if: always()
uses: actions/upload-artifact@v4
with:
name: espresso-android-results
path: android/app/build/outputs/androidTest-results/connected/
retention-days: 7

- name: Install Allure CLI
if: always()
run: |
sudo apt-get update -q
sudo apt-get install -y -q default-jre-headless
curl -fLo allure.tgz https://github.com/allure-framework/allure2/releases/download/2.29.0/allure-2.29.0.tgz
tar -xzf allure.tgz
sudo mv allure-2.29.0 /opt/allure
sudo ln -sf /opt/allure/bin/allure /usr/local/bin/allure

- name: Zip Allure Results
if: always()
run: |
rm -f allure-results.zip
zip -r allure-results.zip allure-results/
echo "=== Zip contents ==="
unzip -l allure-results.zip | head -30

- name: Upload Allure Results Artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: allure-results
path: allure-results.zip
retention-days: 7

- name: Generate Allure HTML Report
if: always()
run: allure generate allure-results --clean -o allure-report

- name: Upload Allure HTML Report
if: always()
uses: actions/upload-artifact@v4
with:
name: allure-html-report
path: allure-report
retention-days: 7

- name: Install Testlio CLI
if: always()
run: npm install -g @testlio/cli

- name: Upload Results to Testlio
if: always()
env:
TESTLIO_DEVICE_ID: ${{ secrets.TESTLIO_ANDROID_DEVICE_ID }}
RUN_API_TOKEN: ${{ inputs.environment == 'Sandbox' && secrets.TESTLIO_RUN_TOKEN || secrets.TESTLIO_RUN_TOKEN_BITPAY }}
run: |
if [ "${{ inputs.environment }}" = "Sandbox" ]; then
export TESTLIO_PROJECT_CONFIG="testlio-cli/project-config-sandbox.json"
else
export TESTLIO_PROJECT_CONFIG="testlio-cli/project-config.json"
fi
testlio create-run \
--testConfig testlio-cli/test-config.json \
--projectConfig "$TESTLIO_PROJECT_CONFIG" \
--externalResults true \
--resultProvider local \
--automatedDeviceIds "$TESTLIO_DEVICE_ID"

testlio parse-run-results \
--projectConfig "$TESTLIO_PROJECT_CONFIG" \
--path allure-results.zip \
--automatedDeviceId "$TESTLIO_DEVICE_ID"

testlio finalize-results \
--projectConfig "$TESTLIO_PROJECT_CONFIG"
Loading