:linkattrs:
= Gerrit Code Review - JavaScript Plugin Checks API

This API is provided by link:pg-plugin-dev.html#plugin-checks[plugin.checks()].
It allows plugins to contribute to the "Checks" tab and summary:

image::images/user-checks-overview.png[width=800]

Each plugin can link:#register[register] a checks provider that will be called
when a change page is loaded. Such a call would return a list of `Runs` and each
run can contain a list of `Results`.

`Results` messages will render as markdown. It follows the
[CommonMark](https://commonmark.org/help/) spec except inline images and direct
HTML are not rendered and kept as plaintext.

The details of the ChecksApi are documented in the
link:https://gerrit.googlesource.com/gerrit/+/master/polygerrit-ui/app/api/checks.ts[source code].
Note that this link points to the `master` branch and might thus reflect a
newer version of the API than your Gerrit installation.

If no plugins are registered with the ChecksApi, then the Checks tab will be
hidden.

You can read about the motivation, the use cases and the original plans in the
link:https://www.gerritcodereview.com/design-docs/ci-reboot.html[design doc].

Here are some examples of open source plugins that make use of the Checks API:

* link:https://gerrit.googlesource.com/plugins/checks/+/master/web/plugin.ts[Gerrit Checks Plugin]
* link:https://chromium.googlesource.com/infra/gerrit-plugins/buildbucket/+/main/web/plugin.ts[Chromium Buildbucket Plugin]
* link:https://chromium.googlesource.com/infra/gerrit-plugins/code-coverage/+/main/web/plugin.ts[Chromium Coverage Plugin]

[[register]]
== register
`checksApi.register(provider, config?)`

.Params
- *provider* Must implement a `fetch()` interface that returns a
  `Promise<FetchResponse>` with runs and results. See also documentation in the
  link:https://gerrit.googlesource.com/gerrit/+/master/polygerrit-ui/app/api/checks.ts[source code].
- *config* Optional configuration values for the checks provider.

[[announceUpdate]]
== announceUpdate
`checksApi.announceUpdate()`

Tells Gerrit to call `provider.fetch()`.

[[updateResult]]
== updateResult
`checksApi.updateResult(run: CheckRun, result: CheckResult)`

Updates an individual result. This can be used for lazy laoding detailled
information. For example, if you are using the
link:pg-plugin-endpoints.html#_check_result_expanded[`check-result-expanded`
endpoint], then you can load more result details when the user expands a result
row.

The parameter `run` is only used to *find* the correct run for updating the
result. It will only be used for comparing `change`, `patchset`, `attempt` and
`checkName`. Its properties other than `results` will not be updated.

For us being able to identify the result that you want to update you have to
set the `externalId` property. An undefined `externalId` will result in an
error.

An example usage can be found in link:https://chromium.googlesource.com/infra/gerrit-plugins/buildbucket/+/main/web/checks-result.ts[Chromium Buildbucket Plugin].
