/.maestro
├── helpers
│ └── <global utility subflows>
├── scripts
│ └── <javascript test helpers>
├── tests
│ ├── onboarding
│ │ ├── login
│ │ │ ├── login.yaml
│ │ │ └── <other tests>
│ │ └── other subfeature
│ │ └── <other tests>
│ ├── teams
│ │ ├── utils
│ │ │ └── <utility subflows>
│ │ └── <teams tests>
│ └── other feature
│ ├── feature-test-1.yaml
│ └── feature-test-2.yaml
└── config.yaml
- Contains shared functions, YAML templates, or parameterized actions that can be reused across multiple flows
- Use this to avoid repeating common UI navigation or setup steps in different test files
Contains the scripts that are going to be executed by the flows before running the tests:
- Contains seeds to common test data, like server url, public channels, etc
- Currently we point to https://mobile.qa.rocket.chat as main server
- Pointing to a local server is not recommended yet, as you would need to create a few public channels and change some permissions
- Ideally we should point to a docker or even a mocked server, but that's tbd
- Try not to add new data there. Use random values instead.
- It's hard to keep track of where each value is used
- Contains user and password with correct permissions on main server
- Check
e2e_account.example.jsfor structure
- Check
- It needs to be added manually on local (it's already set on CI)
Contains anything Maestro should actually run and treat as "a test".
Before running Maestro tests, you need to have your app running. You have two options:
Create a release version APK or IPA file and install it on your device/simulator.
Note: It's good practice to use the release version for E2E testing as it closely matches the production environment.
./gradlew bundleReleaseStart the app in development mode:
pnpm android # for Android
pnpm ios # for iOSOnce your app is running, you can execute Maestro tests:
# Test the entire workflow
maestro test .maestro
# Test a specific file
maestro test .maestro/tests-folder-1/login.yaml