HTTP Webhooks
HTTP Webhooks for getting runs information
Enabling HTTP Webhook Integration will trigger an HTTP POST request to an endpoint of your choice.
Currents will send a POST request for the following lifecycle events of a Playwright test run:
a new run starts -
RUN_STARTa run finishes -
RUN_FINISHa run times out -
RUN_TIMEOUT, see Run Timeoutsa run is cancelled -
RUN_CANCELED, see Cancelling Runs
Enabling the HTTP Webhook integration
Navigate to Manage Project > Integrations
Add the HTTP Webhook integration and provide the details:
URL - the publicly accessible endpoint that will receive the POST requests, e.g.
https://yourserver.com/webhook/currents.devEvents (Optional) - the events that trigger the request. Leaving this field blank activates all the events.
Headers (Optional) - custom HTTP headers sent with every request, see Security
Click Save to preserve the changes
Runs with multiple groups - i.e. multiple Playwright projects reported under the same ci-build-id - emit a request per group, and each payload carries its own groupId.
Examples
Example of an HTTP POST request with Playwright test run data
HTTP Webhook Integration payload schema
Interpreting the results for Playwright runs
For every test that reported a result, the counters reflect the status Currents assigns to it - a composition of Playwright's expected status and the outcome of all its attempts, see Test Status for the full mapping. RUN_START, RUN_TIMEOUT and RUN_CANCELED payloads carry the results known at that point, so they describe only the tests reported so far.
overall
All the tests that reported a result for the run or group, regardless of their outcome
passes
Tests that were executed and whose outcome matched their expected status - tests that passed, plus tests marked with test.fail() that did fail. Tests that never executed also match their expected status, but are counted in pending rather than here
failures
Tests whose outcome did not match their expected status, e.g. a failed assertion, an exception or a timedOut attempt
pending
Tests that were not executed, e.g. tests marked with test.skip() or test.fixme(). These appear as ignored in the dashboard and are excluded from the success rate
skipped
Tests that didn't run because of an error in beforeEach / beforeAll, or because a preceding test in a serial group failed. This is a separate counter from failures, though the dashboard groups the two together when reporting failed tests
retries
Total number of retry attempts across the run or group
flaky
Tests that had at least one attempt matching the expected status and at least one that didn't, see Flaky Tests. This counter overlaps the ones above - a flaky test is also counted under its final outcome
passes, failures, pending and skipped add up to overall. Tests that never reported a result - because the run timed out or was cancelled before reaching them - are not represented in any of these counters, so overall in a RUN_TIMEOUT or RUN_CANCELED payload is smaller than the number of tests the run set out to execute.
A RUN_CANCELED payload is a snapshot rather than the settled state of the run. Tests already in progress when the run is cancelled continue to completion and Currents accepts their results, see Cancelling Runs - so the counters can still change after the request is sent. Read the run through the dashboard or the API if your integration needs the final numbers.
The tags field contains the run tags reported with --tag as well as the tags applied to the executed tests and test groups, see Tags.
Security
Validate the authenticity of Currents webhooks by setting custom HTTP headers.
Timestamp
Currents includes an x-timestamp HTTP header with the system's epoch timestamp for each webhook request to help you prevent replay attacks. Make sure your server's clock is synchronized with a reliable time source to avoid validation issues.
Custom Headers
You can set custom headers to pass a secret key with each webhook request.

Last updated
Was this helpful?