2020-06-09 19:01:06 +00:00
# e2e Testing
## Contents
2019-06-03 19:20:36 +00:00
1. [Prepare test environment ](##-1.-Prepare-test-environment )
2. [Prepare test data ](##-2.-Prepare-test-data )
3. [Running tests ](##-3.-Running-tests )
4. [FAQ ](##-FAQ )
### 1. Prepare test environment
2020-06-09 19:01:06 +00:00
#### 1.1. Set up local Rocket Chat server
2019-06-03 19:20:36 +00:00
* Install Rocket Chat meteor app by following this [guide ](https://rocket.chat/docs/developer-guides/quick-start ).
2020-06-09 19:01:06 +00:00
#### 1.2. Set up detox
2019-06-03 19:20:36 +00:00
* Install dependencies by following this [guide ](https://github.com/wix/Detox/blob/master/docs/Introduction.GettingStarted.md#step-1-install-dependencies ) (only Step 1).
### 2. Prepare test data
2020-06-09 19:01:06 +00:00
2019-06-03 19:20:36 +00:00
* Run Rocket Chat meteor app: `meteor npm start` (make sure you to run this command from project that you created on Step 1.1.).
* Open `localhost:3000` in browser.
* Sign up as admin.
* Create public room `detox-public` .
* Create user with role: `user` , username: `detoxrn` , email: `YOUR@EMAIL.COM` , password: `123` .
* Create user with role: `user` , username: `YOUR.NAME` , email: `YOUR.SECOND@EMAIL.COM` , password: `123` .
* In file `e2e/data.js` change values `existingEmail` with `YOUR.SECOND@EMAIL.COM` , `existingName` with `YOUR.NAME` .
2020-06-09 19:01:06 +00:00
* Login as user `detoxrn` -> open My Account -> Security tab -> click "Enable two-factor authentication" -> copy TTOLP code -> paste TTOLP code into `./e2e/data.js` file into field: `alternateUserTOTPSecret` .
2019-06-03 19:20:36 +00:00
### 3. Running tests
2020-06-09 19:01:06 +00:00
2019-06-03 19:20:36 +00:00
#### 3.1. iOS
2020-06-09 19:01:06 +00:00
2019-06-03 19:20:36 +00:00
* 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`
2020-06-09 19:01:06 +00:00
#### 3.2. Android
2019-06-03 19:20:36 +00:00
* 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 or `cd /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`
2020-06-09 19:01:06 +00:00
#### 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`
2019-06-03 19:20:36 +00:00
### 4. FAQ
2020-06-09 19:01:06 +00:00
2019-06-03 19:20:36 +00:00
#### 4.1. Detox build fails
2020-06-09 19:01:06 +00:00
* Delete `node_modules` , `ios/build` , `android/build` :
2019-06-03 19:20:36 +00:00
`rm -rf node_modules && rm -rf ios/build && rm -rf android/build`
* Install packages: `yarn install`
2020-06-09 19:01:06 +00:00
* Kill metro bundler server by closing terminal or with following command: `lsof -ti:8081 | xargs kill`
2019-06-03 19:20:36 +00:00
* 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 ](##-1.-Prepare-test-environment ).
* Now try building again with `detox build` (with specific configuration).
#### 4.2. Detox iOS test run fails
2020-06-09 19:01:06 +00:00
2019-06-03 19:20:36 +00:00
* 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 ](##-2.-Prepare-test-data ).
* Sometimes detox e2e tests fail for no reason so all you can do is simply re-run again.