Entry point to discover and execute tests. It contains TestController.items which are used to populate the editor UI, and is associated with run profiles to allow for tests to be executed.

Implements

Constructors

Properties

_label: string
_profiles: Map<number, TestRunProfile> = ...
_refreshHandler?: RefreshHandler
_resolveHandler?: ResolveHandler
activeRuns: Map<TestRunRequest, TestRun> = ...
deltaBuilder: AccumulatingTreeDeltaEmitter<string, TestItemImpl>
id: string

The id of the controller passed in tests.createTestController. This must be globally unique.

A collection of "top-level" TestItem instances, which can in turn have their own children to form the "test tree."

The extension controls when to add tests. For example, extensions should add tests for a file when workspace.onDidOpenTextDocument fires in order for decorations for tests within a file to be visible.

However, the editor may sometimes explicitly request children using the resolveHandler See the documentation on that method for more details.

onDispose: (() => void)

Type declaration

    • (): void
    • Returns void

Accessors

  • get refreshHandler(): undefined | RefreshHandler
  • If this method is present, a refresh button will be present in the UI, and this method will be invoked when it's clicked. When called, the extension should scan the workspace for any new, changed, or removed tests.

    It's recommended that extensions try to update tests in realtime, using a FileSystemWatcher for example, and use this method as a fallback.

    Returns undefined | RefreshHandler

    A thenable that resolves when tests have been refreshed.

  • set refreshHandler(value): void
  • If this method is present, a refresh button will be present in the UI, and this method will be invoked when it's clicked. When called, the extension should scan the workspace for any new, changed, or removed tests.

    It's recommended that extensions try to update tests in realtime, using a FileSystemWatcher for example, and use this method as a fallback.

    Parameters

    • value: undefined | RefreshHandler

    Returns void

    A thenable that resolves when tests have been refreshed.

  • get resolveHandler(): undefined | ResolveHandler
  • A function provided by the extension that the editor may call to request children of a test item, if the TestItem.canResolveChildren is true. When called, the item should discover children and call TestController.createTestItem as children are discovered.

    Generally the extension manages the lifecycle of test items, but under certain conditions the editor may request the children of a specific item to be loaded. For example, if the user requests to re-run tests after reloading the editor, the editor may need to call this method to resolve the previously-run tests.

    The item in the explorer will automatically be marked as "busy" until the function returns or the returned thenable resolves.

    Returns undefined | ResolveHandler

  • set resolveHandler(handler): void
  • A function provided by the extension that the editor may call to request children of a test item, if the TestItem.canResolveChildren is true. When called, the item should discover children and call TestController.createTestItem as children are discovered.

    Generally the extension manages the lifecycle of test items, but under certain conditions the editor may request the children of a specific item to be loaded. For example, if the user requests to re-run tests after reloading the editor, the editor may need to call this method to resolve the previously-run tests.

    The item in the explorer will automatically be marked as "busy" until the function returns or the returned thenable resolves.

    Parameters

    • handler: undefined | ResolveHandler

    Returns void

Methods

  • Creates a profile used for running tests. Extensions must create at least one profile in order for tests to be run.

    Parameters

    • label: string

      A human-readable label for this profile.

    • kind: TestRunProfileKind

      Configures what kind of execution this profile manages.

    • runHandler: ((request, token) => void | Thenable<void>)

      Function called to start a test run.

        • (request, token): void | Thenable<void>
        • Parameters

          Returns void | Thenable<void>

    • Optional isDefault: boolean

      Whether this is the default action for its kind.

    • Optional tag: TestTag

      Profile test tag.

    • Optional supportsContinuousRun: boolean

      Whether the profile supports continuous running.

    Returns TestRunProfile

    An instance of a TestRunProfile, which is automatically associated with this controller.

  • Creates a TestRun. This should be called by the TestRunProfile when a request is made to execute tests, and may also be called if a test run is detected externally. Once created, tests that are included in the request will be moved into the queued state.

    All runs created using the same request instance will be grouped together. This is useful if, for example, a single suite of tests is run on multiple platforms.

    Parameters

    • request: TestRunRequest

      Test run request. Only tests inside the include may be modified, and tests in its exclude are ignored.

    • Optional name: string

      The human-readable name of the run. This can be used to disambiguate multiple sets of results in a test run. It is useful if tests are run across multiple platforms, for example.

    • persist: boolean = true

      Whether the results created by the run should be persisted in the editor. This may be false if the results are coming from a file already saved externally, such as a coverage information file.

    Returns TestRun

    An instance of the TestRun. It will be considered "running" from the moment this method is invoked until TestRun.end is called.

  • Marks an item's results as being outdated. This is commonly called when code or configuration changes and previous results should no longer be considered relevant. The same logic used to mark results as outdated may be used to drive continuous test runs.

    If an item is passed to this method, test results for the item and all of its children will be marked as outdated. If no item is passed, then all test owned by the TestController will be marked as outdated.

    Any test runs started before the moment this method is called, including runs which may still be ongoing, will be marked as outdated and deprioritized in the editor's UI.

    Parameters

    Returns void

  • Parameters

    • profileId: string
    • name: string
    • includedTests: string[][]
    • excludedTests: string[][]
    • preserveFocus: boolean

    Returns void