Skip to content

Commit

Permalink
ci(workflow): enable datadog traces for the tests (vercel#50619)
Browse files Browse the repository at this point in the history
### What?

This PR attempts to enable datadog trace integrations to the next.js integration tests if env is configured. With this, datadog can observe each test suite's results and detect some meaningful information (i.e flaky) for us.

However, I wasn't able to verify this works with next.js repo since for some reason CI worker does not pick up the api key in the env (https://vercel.slack.com/archives/C04KC8A53T7/p1685597124894539). Still this won't affect existing workflow, and once enabled I can test it over vercel/turbo repo instead.

Partially resolved WEB-1150.
  • Loading branch information
kwonoj authored and hydRAnger committed Jun 12, 2023
1 parent 529e5c6 commit ab1f88b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ env:
# we build a dev binary for use in CI so skip downloading
# canary next-swc binaries in the monorepo
NEXT_SKIP_NATIVE_POSTINSTALL: 1
DATADOG_API_KEY: ${{ secrets.DATA_DOG_API_KEY }}
DATADOG_TRACE_NEXTJS_TEST: 'true'
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
NEXT_TEST_JOB: 1

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/build_reusable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ env:
# we build a dev binary for use in CI so skip downloading
# canary next-swc binaries in the monorepo
NEXT_SKIP_NATIVE_POSTINSTALL: 1
DATADOG_API_KEY: ${{ secrets.DATA_DOG_API_KEY }}
DATADOG_TRACE_NEXTJS_TEST: 'true'
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
NEXT_TEST_JOB: 1

Expand Down
18 changes: 18 additions & 0 deletions run-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,23 @@ async function main() {

const shouldRecordTestWithReplay = process.env.RECORD_REPLAY && isRetry

const traceEnv =
process.env.DATADOG_API_KEY && process.env.DATADOG_TRACE_NEXTJS_TEST
? {
DD_API_KEY: process.env.DATADOG_API_KEY,
DD_CIVISIBILITY_AGENTLESS_ENABLED: 'true',
DD_ENV: 'ci',
DD_SERVICE: 'nextjs',
NODE_OPTIONS: !!process.env.DATADOG_API_KEY
? '-r dd-trace/ci/init'
: undefined,
}
: {}

if (traceEnv.DD_API_KEY) {
console.log(`Running test with Datadog tracing enabled`)
}

const child = spawn(
jestPath,
[
Expand All @@ -341,6 +358,7 @@ async function main() {
stdio: ['ignore', 'pipe', 'pipe'],
env: {
...process.env,
...traceEnv,
RECORD_REPLAY: shouldRecordTestWithReplay,
// run tests in headless mode by default
HEADLESS: 'true',
Expand Down

0 comments on commit ab1f88b

Please sign in to comment.