Appearance
Troubleshooting
Every CLI warning starts with EasyTrace:. None of them changes your tests' exit code (unless --strict). Add --debug to see each request.
Signing in and permissions
not signed in — run easytrace login, or set EASYTRACE_TOKEN in CI. No token and no stored login for this API URL. On your machine run easytrace login; in CI set the EASYTRACE_TOKEN secret. If you are signed in, check that the API URL is the same one (easytrace whoami) — logins are stored per API URL.
no project — run easytrace init or pass --project. You are signed in, but the config has no project. Run easytrace init, or add "project": "<id>" to easytrace.config.json.
project <id> not found — check "project" in easytrace.config.json or run easytrace init. Either the id is wrong, or the signed-in user isn't a member of the project's organization — EasyTrace answers "not found" for projects of other organizations. Check easytrace whoami: a common case is being signed in with a different account than the one that created the project. Ask an admin of that organization to invite you (Organization → Members), or pick a project you can access with easytrace init --force.
your CLI session expired or was revoked. Run easytrace login again. The session wasn't used for 90 days, was revoked from the CLI sessions page, or replaced by a newer login.
token rejected — results were not uploaded. Check EASYTRACE_TOKEN. The project token is wrong, revoked, or its project was deleted. Create a new one in project → Setup.
easytrace login is for your machine — in CI set EASYTRACE_TOKEN.CI=true (or a detected CI) is set. Use a project token there.
The browser shows "This code has expired or was already used." Codes last 10 minutes and work once. Run easytrace login again.
Reports
no report for suite "<name>" from this run (…) — skipped. With easytrace run, the suite's report file exists but is older than the run: the tests of that suite didn't run, or didn't rewrite the file. Common causes:
- The suite wasn't part of this command (e.g. Playwright wasn't run) — expected.
- Turborepo replayed the task from cache and didn't rewrite the report. Add
--forcetoturbo run(see Monorepos). - The runner writes the file somewhere else than the config says.
no report for suite "<name>" (…) — skipped. No file matches the suite's reports at all. Check the path (relative to the config file) and that the runner is told to write the report.
can't tell the format of <file> — pass --format. The file isn't one of the supported formats, or is empty. Set format on the suite or --format.
easytrace.config.json is invalid: … Invalid JSON or a missing field; the message names it.
easytrace.config.json already exists — pass --force to overwrite.init won't overwrite silently outside a terminal.
Uploads
monthly test result quota reached — results were not uploaded. The organization used its plan's test results for the month. Usage & plan shows when it resets.
could not reach the API (ECONNREFUSED) — … Wrong API URL or the network is blocked. Check apiUrl / EASYTRACE_API_URL. Requests are retried three times before this warning.
upload timed out, N results and M artifacts were skipped. Large artifacts didn't finish within EASYTRACE_FLUSH_TIMEOUT (60 s). Raise it, or upload fewer artifacts (e.g. trace: 'on-first-retry').
coverage is skipped on sharded runs — upload the merged report with "easytrace coverage". See Coverage → Sharded runs.
uploading main from your machine — this run becomes the baseline … Not an error: a login upload of the default branch. See Uploading the default branch.
In the dashboard
A run stays "running". The shard never completed (the job was killed mid-upload). After 3 hours without activity it becomes interrupted.
Tests show as new test cases after changing the report format. A test is identified by its file, title path and browser. JUnit and JSON reports can name the same test differently, so switching formats may start a new history.
A test is never flaky. The report format doesn't record retries (e.g. Vitest JSON records only the count, JUnit without <flakyFailure>), so there is a single attempt.