strapi/tests/cli/README.md
2024-04-03 11:56:00 +02:00

50 lines
2.3 KiB
Markdown

# CLI Tests
## Running the tests
Run `yarn test:cli` to begin. The command will generate the required number of test applications based on the CLI app-template, seed them with preconfigured data [not yet implemented], then run the test suites (or "domains").
The `-c X` option can be used to limit the number of concurrently running domains, where `X` is the number to be run simultaneously.
If any changes are made to the template, or other issues are being encountered, try removing and regenerating the test apps by using `yarn test:cli:clean` before running the tets.
## Writing tests
The [coffee](https://github.com/node-modules/coffee) library is used to run commands and expect input, complete prompts, etc. Please see their documentation for more details.
Warning: Due to issues with the monorepo in regards to linking packages, we currently have to use 'npm' instead of 'yarn' to run internal CLI commands
### Accessing test app information
When a test domain is run, the path to the available test app is provided in the comma-separated env variable TEST_APPS. The number of apps provided will be the number of testApps set in the configuration, or the default of 1.
For example, if 2 test apps are requested, you should receive an env such as: `TEST_APPS=/test-apps/cli/test-app-0,/test-apps/cli/test-app-3`
Your CLI commands being tested can then be run in that directory.
#### Keeping an app running
As the CLI generally does not require a running Strapi app, this is not managed by the CLI testing tool.
After tests for remote data-transfer are implemented, there will be utility functions available to assist in running one or more of the test apps in the background while other tests are run against it.
### Structure
Each subdirectory within the `./tests` directory here is considered a test "domain" and will have its own test app(s) available. By default only one test app is made available unless additional ones are configured in a config.js within that test domain.
#### tests/{domain}/config.js
This optional file should return a function that returns a configuration object like the following complete example:
```typescript
module.exports = () => {
return {
testApps: 2, // the number of test apps to be made available
};
};
```
### How to run and test CLI commands
See the available tests in the `tests` directory for examples.