Files
Sale Djenic 64ca2fb8ca feat: fast password change with optional rekey
Profiles on the DEK encryption scheme change their password by re-wrapping the profile key file
means no database re-encryption, no restart.

The change-password modal has options:
- do fast password change re-wrap the DEK
- do deep password change in case of legacy profiles (one-time migration), or the new profiles for
  which "also re-encrypt my data" (rekey) checkbox is checked

Closes #21877
2026-08-21 23:22:58 +02:00
..

E2E Testing Framework

Automated end-to-end testing for Status Desktop using Appium and LambdaTest.

Quick Start

1. Setup

cd test/e2e_appium
pip install -r requirements.txt

2. Configure LambdaTest (GitHub Secrets)

Repository administrators need to set:

  • LT_USERNAME - Your LambdaTest username
  • LT_ACCESS_KEY - Your LambdaTest access key

3. Run Tests via GitHub Actions

  1. Build APK using android-build.yml workflow (architecture: x86_64)
  2. Run tests using e2e-appium-android.yml workflow
  3. Use artifact name: Status-x86_64

Test Selection

By markers:

pytest -m smoke          # Core functionality
pytest -m onboarding     # User registration flow
pytest -m critical       # Essential features
pytest -m performance    # Performance validation tests

Specific tests:

# Run onboarding tests with fixture
pytest tests/test_onboarding_flow.py::TestOnboardingFlow::test_complete_onboarding_flow_with_fixture

# (Legacy examples removed for v1)

# Run tests that depend on onboarding
pytest tests/test_onboarding_dependent_features.py

Local Testing

# Setup local environment
python scripts/local_setup.py

# Run tests with local APK
export LOCAL_APP_PATH="/path/to/Status.apk"
pytest -m onboarding --env=local -v

GitHub Actions Workflows

Build APK Workflow

  • File: android-build.yml
  • Architecture: x86_64 (required for LambdaTest)
  • Output: Status-x86_64 artifact

E2E Testing Workflow

  • File: e2e-appium-android.yml
  • APK source: GitHub artifact (default)
  • Test target: onboarding (default)
  • Device: Galaxy Tab S8 (default)

Workflow Input Options

APK Sources

  • GitHub artifacts: Status-x86_64 (recommended)
  • Direct URLs: https://example.com/app.apk
  • LambdaTest IDs: lt://APP123456789

Device Options

  • default: Galaxy Tab S8 (Android 14)
  • pixel_tablet: Google Pixel Tablet
  • galaxy_tab_a: Samsung Galaxy Tab A

Test Targets

  • onboarding: Complete user onboarding flow
  • smoke: Quick critical functionality tests
  • critical: Essential features that must pass

Onboarding Fixture

The framework includes a reusable onboarding fixture that eliminates code duplication:

# Simple usage - fixture handles complete onboarding
def test_my_feature(self, onboarded_user):
    user_data = onboarded_user['user_data']
    assert onboarded_user['success']
    # Test your feature here

# Advanced usage with custom configuration  
@pytest.mark.onboarding_config(custom_display_name="MyUser")
def test_with_custom_onboarding(self, onboarded_user):
    assert onboarded_user['user_data']['display_name'] == "MyUser"

📖 Quick Guide: Using Onboarding Fixtures
📖 Complete Onboarding Fixture Documentation

Environment Configuration

For LambdaTest (Cloud)

# Set in GitHub repository secrets
LT_USERNAME=your_username
LT_ACCESS_KEY=your_access_key

For Local Testing

export LOCAL_APP_PATH="/path/to/Status.apk"
export CURRENT_TEST_ENVIRONMENT="local"

Troubleshooting

APK Build Issues:

  • Verify x86_64 architecture selected in android-build.yml
  • Check build workflow completed successfully

Test Execution Issues:

  • Verify LambdaTest credentials in repository secrets
  • Check APK artifact name matches exactly: Status-x86_64
  • Review workflow logs for detailed error messages

Local Testing Issues:

  • Ensure Appium server running: appium
  • Verify Android emulator running with correct device name
  • Check LOCAL_APP_PATH points to valid APK file

Framework Structure

test/e2e_appium/
├── tests/              # Test files
├── pages/              # Page object models
├── config/             # Configuration files
├── scripts/            # Automation and setup scripts
├── docs/               # Documentation
└── .github/actions/    # Reusable workflow actions

Contributing

Documentation

Getting Started

Workflow & CI/CD

Framework Usage

Reference