ubq 0.0.7(beta)

This page as markdown

Configuration

Which files ubq runs, and the ubq key of package.json.

The goal is as little configuration as possible (D24). Most projects need none.

What ubq runs with no configuration#

ubq with no arguments runs each file in the project whose name ends in .test.ts, .test.mts, .test.cts, .test.tsx, .test.js, .test.mjs, .test.cjs, or .test.jsx (D19).

The project is the folder of the nearest package.json at or above the working directory. The search leaves out:

A file that is an argument always runs: ubq any/file.ts. A folder that is an argument runs the test files of the project that are in it. A folder that is a different project is an error.

The ubq key of package.json#

{
  "ubq": {
    "include": ["test/**/*.ts"],
    "exclude": ["test/helpers/**"],
    "timeout": 10000
  }
}
Key Type Default Meaning
include list of glob patterns the .test. name pattern Replaces the name pattern. Paths are from the project root.
exclude list of glob patterns none Files that are not test files, after include.
helpers list of glob patterns **/{test,tests,__tests__}/** Test helpers: files that are part of the tests and are not test files, such as a setup module or the scenario of an end-to-end test (D51). ubq uncovered leaves them out, and ubq mutate --diff does not change them. The list replaces the default. An empty list means that no file is a helper.
build list of glob patterns dist/**, scripts/** Files that are not source of the program: the output of a build, and the tools of the build (D55). ubq uncovered leaves them out, and ubq mutate --diff does not change them. The list replaces the default. An empty list means that each file is source. A built file with a source map gives its coverage to the source files that the map names.
timeout number 5000 The time limit of a test in milliseconds, if the test and its groups set none.
hangRerun boolean true false turns off the rerun of a test that timed out with something open (D14).
bunInspectorCoverage boolean false true records coverage for a test file that runs as a plain program on Bun (bun test/foo.ts). The places are a guess and can be wrong (D39).
browser object none For tests that use 'ubqtest/browser' (D45). url: the base of page.goto('/path'). command (optional): the shell command that starts the server at url. ubq runs it from the project root if a test file of the run imports 'ubqtest/browser' and nothing answers at url, waits 30 seconds at most for an answer, and stops it after the run. Its output is in .ubq/browser-server.log. With no browser key, a page loads the files of the project from the disk.
workers list of objects none Test files that run in workerd, the runtime of Cloudflare Workers (D48). Each object has config (the path of a wrangler config, from the project root) and include (glob patterns of test files, from the project root). vars (optional) is an object of test values for vars: they go on top of the vars of the wrangler config. The values of .dev.vars and .env are not read. A test file that matches gets the bindings of that config. A file must also be a test file by include and exclude of the first rows. The first object that matches a file wins. The project must have the wrangler package.

Rules:

Source: src/config.ts. Tests: test/select.test.ts.

A monorepo#

At a project root that has workspaces in its package.json and no test files of its own, ubq runs the command in each workspace, one after the other (ubq, ubq --failed, ubq --changed). Each workspace is a project with its own store, and the paths in its report are from its own folder. The last line is workspaces: 3 passed, or workspaces: 1 of 3 failed: packages/b. A workspace with no tests does not count.

For a question about stored runs, or for one test, run ubq in the folder of the workspace.