Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

For the Totara Mobile app, we use Detox for implementing end-to-end automated testing. This uses apollo-server-express to implement the mock data for the API responses.

Detox setup

Below you can find the guidance you need to setup Detox. You will need to install the following:

Install Detox command line tools

To install the Detox command line tool you will need to ensure detox-cli  is installed globally.

Detox Installation
npm install -g detox-cli

Configure mock

Please add config.detox.ts file under src/totara/lib/  folder with the following content.

Detox configurations
const localConfig = {
  mobileApi: {
    persistentQuery: false
  },
  disableConsoleYellowBox: true
};

export default localConfig;

Mock server

Detox automated testing starts the node server for mocking API requests. It downloads GraphQL schema from the server after app installation using get-graphql-schema library. Here is the custom command to download and save schema to the e2e/graphql/schema.json  file:

GraphQL Schema Setup
npm run mock:schema:setup

For testing a mock server, it can be started with default data using following command:

Start Mock Server
node server

To launch the GraphQL playground, where you can play with queries go to the URL:  http://127.0.0.1:8089/totara/mobile/api.php  

Build and run the tests

Prior to running tests with Detox you will need to integrate the Detox server configurations to the app. This will replace src/totara/lib/config.local.ts  with src/totara/lib/config.detox.ts  before it the test if built and run.  After the Detox test has complete, it will replace the src/totara/lib/config.local.ts  with the original file. Use the following command to make configuration changes and execute Detox tests:

Execute automate tests
npm run detox:run

Troubleshooting

Below you can find some common troubleshooting guidance.

Cache data

In case you run into dependency issues, you can try running the following command to clear all the cache, modules & pods then reinstall:

Clear app all cache data
npm run clear:all
  • No labels