Skip to content

Commit

Permalink
ci(workflow): enable datadog traces for the tests (#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 committed Jun 5, 2023
1 parent 78ed08d commit 2b1f0d9
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 2b1f0d9

Please sign in to comment.