Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
f5d9c01
Fix: use the adjusted min for swap pills
Gamboster Mar 30, 2026
64fda60
Fix: use touchable and min size on bottom notif actions
Gamboster Apr 1, 2026
14c3a49
SendTo: Fix - Email validation regex causing stack overflow
cmgustavo Apr 3, 2026
7e6af6d
fix: prevent unhandled rejected dangling otp toggle promise
msalcala11 Apr 3, 2026
a52d084
Merge pull request #2118 from cmgustavo/bug/regex-valid-email-01
JohnathanWhite Apr 3, 2026
8b8e236
Merge pull request #2119 from msalcala11/fix-invalid-code-crash
JohnathanWhite Apr 3, 2026
f78ae72
Merge pull request #2107 from Gamboster/fix/swapPillMinLimit
JohnathanWhite Apr 3, 2026
3b35196
added build phase
JohnathanWhite Mar 31, 2026
7cb3292
bump 14.41.0
JohnathanWhite Apr 3, 2026
886b0e9
Create/Import: Enhancement - reduce duplicate wallet creation during …
cmgustavo Mar 18, 2026
6b01d9d
KeySettings: Fix - remove old LogAction by logManager
cmgustavo Apr 2, 2026
9363e6e
Exclude mocks folder to tsconfig
cmgustavo Apr 2, 2026
0982dcc
Validate: Fix - general fixes for validate script (#10)
gabrielbazan7 Apr 2, 2026
9fcb6d6
AppsFlyer: Chore - Upgrade react-native-appsflyer
cmgustavo Mar 31, 2026
a7fd279
Support deferred nonce EVM txps by assigning fresh nonce before signing
leolambo Mar 19, 2026
91dbf03
Use prepareTx and handle null nonce for EVM txps
leolambo Mar 25, 2026
9403fc7
Extend deferred nonce support to XRP
leolambo Apr 6, 2026
40eb99a
Update nonce txp filter logic
leolambo Apr 7, 2026
4904d65
updated testIDs and accessibility labels
JohnathanWhite Apr 8, 2026
30ea6a6
TSS: Enhancement - wording improvements
gabrielbazan7 Apr 3, 2026
0c8a643
TSS: Enhancement - show actions list information ( needs support from…
gabrielbazan7 Apr 3, 2026
858bfb6
TSS: Enhancement - remove tss txps automatically after 10 minutes
gabrielbazan7 Apr 3, 2026
e826288
TSS: Enhancement - readonly support for tss
gabrielbazan7 Apr 3, 2026
2e23adf
TSS: Enhancement - clear encrypt pass support for tss
gabrielbazan7 Apr 6, 2026
a508528
TSS: Fix - decode the URI before passing it to RNFS.readfile
gabrielbazan7 Apr 6, 2026
bc4f2ba
TSS: Enhancement - readonly support for tss 2
gabrielbazan7 Apr 6, 2026
61dce3c
TSS: Enhancement - add 'how to find Session ID' info text
gabrielbazan7 Apr 7, 2026
ae53946
TSS: Enhancement - improve needsBackup handling
gabrielbazan7 Apr 8, 2026
b61d712
prettier
gabrielbazan7 Apr 8, 2026
c7ce5ef
TSS: Enhancement - use temporary directory for keyshare file and dele…
gabrielbazan7 Apr 8, 2026
e17dd7e
E2E: Fix - move misplaced accessibilityLabel from JSX children to props
gabrielbazan7 Apr 9, 2026
89fe173
Fix: send payment_method prop for banxa CreateOrder
Gamboster Apr 9, 2026
e22b74f
bump 14.41.1
JohnathanWhite Apr 11, 2026
1fbd9f0
Merge pull request #2150 from JohnathanWhite/release/14.41.1
JohnathanWhite Apr 23, 2026
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
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
208 changes: 208 additions & 0 deletions .github/workflows/android-espresso.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
name: Android Espresso E2E

on:
workflow_dispatch:
push:
branches: [master, develop, testlio/ui-tests]
pull_request:
branches: [master, develop, testlio/ui-tests]

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

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

- 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"
echo "=== Disk after cleanup ==="
df -h

- 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
run: yarn install --frozen-lockfile

- name: Create env file
env:
ENV_FILE: ${{ secrets.ENV_DEVELOPMENT }}
run: echo "$ENV_FILE" > .env.development

- 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: 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 /home/runner/work/_temp/allure-results/. 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 "::warning::No Allure result JSON files found under allure-results/"
else
echo "Allure results found:"
find allure-results -name '*.json'
fi

- name: Upload device logcat
if: always()
uses: actions/upload-artifact@v4
with:
name: device-logcat
path: /home/runner/work/_temp/device-logcat.txt
retention-days: 7

- 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:
RUN_API_TOKEN: ${{ secrets.TESTLIO_RUN_TOKEN }}
TESTLIO_DEVICE_ID: 363a5ce7-6cef-436c-8531-6c07195c8fe8
run: |
testlio create-run \
--testConfig testlio-cli/test-config.json \
--projectConfig testlio-cli/project-config.json \
--externalResults true \
--resultProvider local \
--automatedDeviceIds "$TESTLIO_DEVICE_ID"

testlio parse-run-results \
--projectConfig testlio-cli/project-config.json \
--path allure-results.zip \
--automatedDeviceId "$TESTLIO_DEVICE_ID"

testlio finalize-results \
--projectConfig testlio-cli/project-config.json
Loading