Import JavaScript Tests
Testomat.io can import automated tests into a project. We provide CLI tools for different frameworks so you get visibility of your tests in seconds. On this page we collect the reference to them. Learn how to install and configure test importer for your project.
JavaScript
Section titled “JavaScript”📑 This documentation is taken from open-source project testomatio/check-tests
Run check-tests via npx:
npx check-tests <framework> "<tests>" --no-skippedDevelopment
Section titled “Development”To change host of endpoint for receiving data, and set it to other than app.testomat.io use TESTOMATIO_URL environment variable: TESTOMATIO_URL=http://local.testomat.io
This checker will fail a build if exclusive tests (with
.onlyorfitorfdescribefound)
Arguments:
Section titled “Arguments:”- test framework
- glob pattern to match tests in a project, example:
tests/**_test.js'. It is important to include glob pattern in double quotes"so wildcard could be used correctly.
CLI Options:
Section titled “CLI Options:”--no-skipped- fail when skipped tests found--typescript- enable typescript support-g, --generate-file <fileName>- Export test details to document-u, --url <url>, Github URL to get file link (URL/tree/master)
Example
Section titled “Example”Framework Examples
Section titled “Framework Examples”CodeceptJS
Section titled “CodeceptJS”## JavaScriptnpx check-tests codeceptjs "tests/**_test.js"## TypeScriptnpx check-tests codeceptjs "tests/**_test.ts" --typescriptCypress.io
Section titled “Cypress.io”## JavaScriptnpx check-tests cypress "cypress/integration/**.js"npx check-tests cypress.io "cypress/e2e/**.js"## TypeScriptnpx check-tests cypress "cypress/integration/**.ts" --typescriptnpx check-tests cypress.io "cypress/e2e/**.spec.ts" --typescriptJasmine
Section titled “Jasmine”## JavaScriptnpx check-tests jasmine "spec/**/*.spec.js"## TypeScriptnpx check-tests jasmine "spec/**/*.spec.ts" --typescript## JavaScriptnpx check-tests jest "tests/**/*.test.js"npx check-tests jest "__tests__/**/*.js"## TypeScriptnpx check-tests jest "tests/**/*.test.ts" --typescriptnpx check-tests jest "src/**/*.spec.ts" --typescript## JavaScriptnpx check-tests mocha "test/**/*_test.js"npx check-tests mocha "tests/**/*.spec.js"## TypeScriptnpx check-tests mocha "test/**/*.test.ts" --typescriptNewman (Postman Collections)
Section titled “Newman (Postman Collections)”## Single collectionnpx check-tests newman "api-tests.postman_collection.json"## Multiple collectionsnpx check-tests newman "collections/*.json"Nightwatch
Section titled “Nightwatch”## JavaScriptnpx check-tests nightwatch "tests/**/*.js"## TypeScriptnpx check-tests nightwatch "tests/**/*.ts" --typescriptPlaywright
Section titled “Playwright”## JavaScriptnpx check-tests playwright "tests/**/*.spec.js"npx check-tests playwright "e2e/**/*.test.js"## TypeScriptnpx check-tests playwright "tests/**/*.spec.ts" --typescriptnpx check-tests playwright "e2e/**/*.test.ts" --typescriptProtractor
Section titled “Protractor”## JavaScriptnpx check-tests protractor "spec/**.spec.js"npx check-tests protractor "e2e/**/*_spec.js"## TypeScriptnpx check-tests protractor "spec/**.spec.ts" --typescriptnpx check-tests protractor "e2e/**/*.spec.ts" --typescript## JavaScriptnpx check-tests qunit "tests/**/*.js"## TypeScriptnpx check-tests qunit "tests/**/*.ts" --typescriptTestCafe
Section titled “TestCafe”## JavaScriptnpx check-tests testcafe "tests/**.js"npx check-tests testcafe "fixtures/**/*.test.js"## TypeScriptnpx check-tests testcafe "tests/**.ts" --typescriptnpx check-tests testcafe "fixtures/**/*.test.ts" --typescriptVitest
Section titled “Vitest”## JavaScriptnpx check-tests vitest "tests/**/*.test.js"npx check-tests vitest "src/**/*.spec.js"## TypeScriptnpx check-tests vitest "tests/**/*.test.ts" --typescriptnpx check-tests vitest "src/**/*.spec.ts" --typescript## Gauge specification filesnpx check-tests gauge "specs/**/*.spec"npx check-tests gauge "tests/**/*.spec"Manual Tests (Markdown)
Section titled “Manual Tests (Markdown)”## Markdown-based manual test documentationnpx check-tests manual "docs/tests/**/*.md"npx check-tests manual "manual-tests/*.md"Sample Output
Section titled “Sample Output”List CodeceptJS tests

.only test:
✗ npx check-tests mocha "test/**/**_test.js"[[ Tests checker by testomat.io ]]Error: Exclusive tests detected. `.only` call found in test/checkout/important_test.js:290Remove `.only` to restore test checksUsing in Testomatio
Section titled “Using in Testomatio”This library is used by Testomatio to import tests.
Importing Into Project
Section titled “Importing Into Project”Use TESTOMATIO environment variable with a valid API key to import data into a project.
API key can be obtained on project settings page or on “Import From Source” page.
For example:
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js"Test code
Section titled “Test code”By default, check-test sends the code of the test hooks to the “client”: before, beforeEach and after. In the “Codes” section you can see all the additional “context” of the test (Testomat.io). To exclude hook code from a client test, use the —no-hooks option
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --no-hooksAdditional line number to the test code
Section titled “Additional line number to the test code”To include line number code from a client test, use —line-numbers option. (By default Code section exclude “line number”)
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --line-numbersImport Parametrized Tests
Section titled “Import Parametrized Tests”It is possible to import parametrized tests if they use template literals with variables in thier names:
['one', 'two', 'three'].forEach(() => { it(`this is test number ${parameter}`);});This test will be imported with its original name including a placeholder:
this is test number ${parameter}When executed test will be reported with 3 results matched to the same test and param values will be added to the report.
Disable Detached Tests
Section titled “Disable Detached Tests”If a test from a previous import was not found on next import it is marked as “detached”.
This is done to ensure that deleted tests are not staying in Testomatio while deleted in codebase.
To disable this behavior and don’t mark anything on detached on import use --no-detached option
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --no-detachedThis option could also be set via environment variable TESTOMATIO_NO_DETACHED=1.
If you don’t want to pass it each time, create .env file in the root dir of your project with this variable set.
Synchronous Import
Section titled “Synchronous Import”By default check-tests doesn’t wait for all tests to be processed. It sends request to Testomatio and exits. To wait for processing to finish use --sync option.
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --syncPlease note, that this will take a long time on a large codebase.
Auto-assign Test IDs in Source Code
Section titled “Auto-assign Test IDs in Source Code”To disable guess matching for tests it is recommend to use Testomatio IDs to map a test in source code to a test in Testomatio. Testomatio IDs can be put automatically into the test names into source code when --update-ids option is used:
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --update-idsTests imported with --update-ids will be processed in synchronouse mode, so the script will finish after all tests are processed.
Keep Test IDs Between Projects
Section titled “Keep Test IDs Between Projects”To import tests with Test IDs set in source code into another project use --create option. In this case, a new project will be populated with the same Test IDs.
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --createWithout --create import will fail with a message that ID was not found.
Clean Test IDs
Section titled “Clean Test IDs”If you want to import the synced project as new project, you have to clean the test ids.
To clean up test ids without connecting to Testomatio project use --purge option:
npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --purgeThis method may be unsafe, as it cleans all @S* and @T* tags from tests and suites. So if you have a tag like @Test1234 this may also be removed. If you use this option make sure if all the test titles a proper before committing the tests in GIT.
Note:
--purgeis an alias of--unsafe-clean-idsoption. To clean only test ids set from a specific project use--clean-idsoption instead:
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --clean-idsTESTOMATIO is API key of a project with existing test ids.
Import Into a Branch
Section titled “Import Into a Branch”Tests can be imported into a specific branch if TESTOMATIO_BRANCH parameter is used.
Branch is matched by its id. If branch was not found, it will be created.
TESTOMATIO_BRANCH=dev TESTOMATIO=1111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js"Keep Structure of Source Code
Section titled “Keep Structure of Source Code”When tests in source code have IDs assigned and those tests are imported, Testomat.io uses current structure in a project to put the tests in. If folders in source code doesn’t match folders in Testomat.io project, existing structure in source code will be ignored. To force using the structure from the source code, use --keep-structure flag on import:
TESTOMATIO=1111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --keep-structureDelete Empty Suites
Section titled “Delete Empty Suites”If tests were marked with IDs and imported to already created suites in Testomat.io
newly imported suites may become empty. Use --no-empty option to clean them up after import.
TESTOMATIO=1111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --no-emptyThis prevents usage —keep-structure option.
Import Into a Specific Suite
Section titled “Import Into a Specific Suite”To put all imported tests into a specific suite (folder) pass in TESTOMATIO_PREPEND_DIR environment variable, avoid using special characters in the directory name. This helps prevent potential errors across different operating systems and command-line environments.
Recommendations:
Use only letters (A-Z, a-z), numbers (0-9), hyphens (-), and underscores (_).
Avoid characters like /, \, :, *, ?, ", <, >, |, &, $, #, %, @, and the apostrophe (').
Examples of recommended naming: MyTests or project_tests.
TESTOMATIO_PREPEND_DIR="MyTESTS" TESTOMATIO=1111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js"This will use “MyTests” folder in a root of a project or create it if it doesn’t exist. It is also possible to specify a suite by its SID:
TESTOMATIO_SUITE="1111111" TESTOMATIO=1111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js"or use SID with prefix:
TESTOMATIO_SUITE="S1111111" TESTOMATIO=1111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js"TESTOMATIO_SUITE="@S1111111" TESTOMATIO=1111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js"Apply Labels to Tests
Section titled “Apply Labels to Tests”Use TESTOMATIO_LABELS to tag all imported tests with labels:
## Apply single labelTESTOMATIO_LABELS="smoke" TESTOMATIO=1111111 npx check-tests jest "tests/**/*.test.js"## Apply multiple labels (comma-separated)TESTOMATIO_LABELS="smoke,regression,api" TESTOMATIO=1111111 npx check-tests playwright "tests/**/*.spec.ts"## Apply labels with values using label:value formatTESTOMATIO_LABELS="severity:high,feature:user_account,team:backend" TESTOMATIO=1111111 npx check-tests jest "tests/**/*.test.js"## Mix simple labels and label:value pairsTESTOMATIO_LABELS="smoke,severity:critical,feature:auth,regression" TESTOMATIO=1111111 npx check-tests playwright "tests/**/*.spec.ts"## Use alias for Python SDK compatibilityTESTOMATIO_SYNC_LABELS="integration,e2e" TESTOMATIO=1111111 npx check-tests cypress "cypress/integration/**/*.js"Remove Path Prefixes
Section titled “Remove Path Prefixes”Use TESTOMATIO_WORKDIR to avoid redundant folder nesting:
## Problem: src/tests/API/ creates nested paths in Testomat.io## Solution: Set working directory to remove src/tests prefixTESTOMATIO_WORKDIR=src/tests TESTOMATIO=1111111 npx check-tests playwright "**/*.spec.ts"## Monorepo: Import without parent pathsTESTOMATIO_WORKDIR=apps/frontend TESTOMATIO=1111111 npx check-tests jest "**/*.test.js"Group Tests by Category
Section titled “Group Tests by Category”Use TESTOMATIO_PREPEND_DIR to organize tests:
## Group API tests under "API Tests" folderTESTOMATIO_PREPEND_DIR="API Tests" TESTOMATIO=1111111 npx check-tests jest "src/api/**/*.test.js"## Separate by teamTESTOMATIO_PREPEND_DIR="Frontend Team" TESTOMATIO=1111111 npx check-tests playwright "tests/ui/**/*.spec.ts"Import to Specific Suite
Section titled “Import to Specific Suite”Use TESTOMATIO_SUITE to target existing suites:
## Import to existing suite by SIDTESTOMATIO_SUITE=S1234567 TESTOMATIO=1111111 npx check-tests jest "features/**/*.test.js"TypeScript
Section titled “TypeScript”For TypeScript projects @babel/core and @babel/plugin-transform-typescript packages are used. GitHub Action already contains those modules, while CLI version of this tool tries to automatically install them on first run.
If you face issues parsing TypeScript file menitioning @babel/core or @babel/plugin-transform-typescript try to install them manually:
npm i @babel/core @babel/plugin-transform-typescript --save-devNow tests TypeScript can be imported with --typescript option:
TESTOMATIO=11111111 npx check-tests CodeceptJS "**/*{.,_}{test,spec}.js" --typescriptES2023 Support
Section titled “ES2023 Support”Starting from version 0.13.3, the tool supports ES2023 Explicit Resource Management (ERM) syntax including:
usingdeclarations for automatic resource disposal[Symbol.dispose]method definitions This allows parsing of modern TypeScript/JavaScript files that use resource management patterns:
const getResource = () => ({ [Symbol.dispose]: () => { /* cleanup code */ },});test('resource management', () => { using resource = getResource(); // resource will be automatically disposed at the end of the scope});Test aliases
Section titled “Test aliases”Test aliases are used to map tests in source code to tests in Testomat.io. By default test and it are parsed. But if you rename them or use another function to define tests (e.g. created/extended test object in Playwright), you can add alias (or multiple aliases, separated by comma) via --test-alias option:
TESTOMATIO=11111111 npx check-tests Playwright "**/*{.,_}{test,spec}.ts" --test-alias myTest,myCustomFunctionProgrammatic API
Section titled “Programmatic API”Import Analyzer from module:
const { Analyzer } = require('check-tests');const framework = 'jest';const pathToTests = './tests';const pattern = '**/*[._-]{test,spec}.{ts,js}';const analyzer = new Analyzer(framework, pathToTests);// to enable typescript...analyzer.withTypeScript();// to enable babel pluginsanalyzer.addPlugin('@babel/plugin-syntax-jsx');analyzer.addPlugin('@babel/plugin-syntax-flow');// to enable babel presetsanalyzer.addPreset('@babel/preset-react');analyzer.addPreset('@babel/preset-flow');analyzer.analyze(pattern);// stats on processed filesconst stats = analyzer.stats;// full info on parsed testsconst data = analyzer.rawTests;Debugging
Section titled “Debugging”Run import with DEBUG="testomatio:*" environment variable to get additional logs which may help understanding the cause of an issue. Usually it may happen because of a specific file that couldn’t be parsed:
DEBUG="testomatio:*" npx check-tests@latest ....API Definition
Section titled “API Definition”API Endpoint to import test data into Testomat.io: Import API Reference
Limitations
Section titled “Limitations”- Can’t analyze included tests from external files
- Can’t analyze dynamically created tests
License MIT
Section titled “License MIT”Part of Testomat.io