df6c2c5424
* Idempotence for Assorted * Idempotence for Onboarding * Idempotence for Rooms * Remove redundant expects * Fixes and improvements * Remove unneeded sleeps * Make stable following merge * Try solving early taps without long sleep Try solving early taps without long sleep (cont) Temporary CircleCI hack for quicker testing Add screenshots to CircleCI for failed tests Try solving early taps without long sleep (cont. 2) Revert "Temporary CircleCI hack for quicker testing" This reverts commit 4abef3a5827910c05b12ac8b8380275b60e8af4f. * Fix flaky test with a fluent wait on the tap * Add some new sleeps to workaround #2324 * Add test artifacts to gitignore * More longpress for dodgy taps, wait for pin response Co-authored-by: Diego Mello <diegolmello@gmail.com> |
||
---|---|---|
.. | ||
data | ||
docker | ||
helpers | ||
tests | ||
.mocharc.json | ||
README.md | ||
data.js |
README.md
e2e Testing
Contents
1. Prepare test environment
1.1. A Rocket.Chat server
Either
- Install Rocket.Chat meteor app by following this guide.
Or
- Use the local Docker environment available in this folder. You can start the environment using
./e2e/docker/controlRCDemoEnv.sh startandwait
, or you can use the packaged start & run script (see step 3). Either way, you'll need Docker and Docker Compose.
1.2. Set up detox
- Install dependencies by following this guide (only Step 1).
2. Prepare test data
- If you're running your own Rocket.Chat server, ensure it's started (e.g.
meteor npm start
in the server project directory). - Edit
e2e/data.js
:- Set the
server
to the address of the server under test - Set the
adminUser
andadminPassword
to an admin user on that environment (or a user with at leastcreate-user
andcreate-c
).
- Set the
- Working example configs exist in
./e2e/data/
. SettingFORCE_DEFAULT_DOCKER_DATA
to1
in therunTestsInDocker.sh
script will use the example config automatically
3. Running tests
3.1. iOS
- Build app with detox:
detox build -c ios.sim.release
- Open Simulator which is used in tests (check in package.json under detox section) from Xcode and make sure that software keyboard is being displayed. To toggle keyboard press
cmd+K
. - Run tests:
detox test -c ios.sim.release
, or, if choosing Docker you can run the packaged environment & runner (./e2e/docker/runTestsInDocker.sh
) which will start the Docker infrastructure, run the tests and tear it down again once done.
3.2. Android
- Build app with detox:
detox build -c android.emu.debug
- Run:
react-native start
- Run Android emulator with name
ANDROID_API_28
via Android studio orcd /Users/USERNAME/Library/Android/sdk/emulator/ && ./emulator -avd ANDROID_API_28
Note: if you need to run tests on different Android emulator then simply change emulator name in ./package.json detox configurations - Run tests:
detox test -c android.emu.debug
3.3 Running a subset of tests
Tests have been grouped into subfolders. You can choose to run just one group of tests by running, for example:
detox test ./e2e/tests/onboarding -c ios.sim.release
To do the same with the Docker runner:
./e2e/docker/runTestsInDocker.sh onboarding
4. FAQ
4.1. Detox build fails
- Delete
node_modules
,ios/build
,android/build
:rm -rf node_modules && rm -rf ios/build && rm -rf android/build
- Install packages:
yarn install
- Kill metro bundler server by closing terminal or with following command:
lsof -ti:8081 | xargs kill
- Clear metro bundler cache:
watchman watch-del-all && rm -rf $TMPDIR/react-native-packager-cache-* && rm -rf $TMPDIR/metro-bundler-cache-*
- Make sure you have all required environment.
- Now try building again with
detox build
(with specific configuration).
4.2. Detox iOS test run fails
- Check if your meteor app is running by opening
localhost:3000
in browser. - Make sure software keyboard is displayed in simulator when focusing some input. To enable keyboard press
cmd+K
. - Make sure you have prepared all test data.
- Sometimes detox e2e tests fail for no reason so all you can do is simply re-run again.
5. Todo
- TOTP test
- Push notifications
- Deep linking
- Intermittent connectivity