Alexandre Bodin 92055a7fb1 chore: use rollup
chore: fetch template only if name matches name convention

chore: linting

chore: fix tests

chore: fix npm scripts

test: try to fix test
2025-01-23 16:28:23 +01:00
..
2025-01-23 16:28:23 +01:00
2024-04-03 11:56:00 +02:00
2024-04-03 11:56:00 +02:00

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 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:

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.