Skip to content

Conversation

Mariovido
Copy link
Contributor

@Mariovido Mariovido commented Aug 22, 2025

What does this PR do?

With this fix we enable Playwright instrumentation for version >=1.55.0

Motivation

We want to support latests versions of the tracers supported in our product.

Plugin Checklist

  • Unit tests.
  • Integration tests.

Copy link

github-actions bot commented Aug 22, 2025

Overall package size

Self size: 11.89 MB
Deduped: 111.51 MB
No deduping: 111.85 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.1.0 | 20.37 MB | 20.37 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.9.0 | 9.77 MB | 10.1 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.14.2 | 122.36 kB | 850.93 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented Aug 22, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.76%. Comparing base (e52d84c) to head (2db0f25).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6330      +/-   ##
==========================================
+ Coverage   83.72%   83.76%   +0.04%     
==========================================
  Files         476      477       +1     
  Lines       20001    20061      +60     
==========================================
+ Hits        16745    16805      +60     
  Misses       3256     3256              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter
Copy link

pr-commenter bot commented Aug 22, 2025

Benchmarks

Benchmark execution time: 2025-08-22 09:23:16

Comparing candidate commit 2db0f25 in PR branch mario.vidal/playwright_greater_1.55 with baseline commit e52d84c in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1273 metrics, 50 unstable metrics.

@Mariovido Mariovido marked this pull request as ready for review August 22, 2025 09:32
@Mariovido Mariovido requested a review from a team as a code owner August 22, 2025 09:32
function getProjectsFromRunner (runner) {
const config = getPlaywrightConfig(runner)
function getProjectsFromRunner (runner, configArg) {
const config = configArg || getPlaywrightConfig(runner)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to double-check: configArg ? configArg.config : getPlaywrightConfig(playwrightRunner) and configArg || getPlaywrightConfig(runner) seem inconsistent - one uses configArg directly as a replacement for getPlaywrightConfig, the other uses configArg.config

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because they changed the structure of the config. This configArg is the parameter of the function that contains multiple things such as the projects or the "real" config where the rootDir is stored. Previously all of this was stored directly on playwrightRunner

  • configArg:
    • projects
    • config
      • rootDir


function runnerHookNew (runnerExport, playwrightVersion) {
runnerExport = shimmer.wrap(runnerExport, 'runAllTestsWithConfig', function (originalGetter) {
const originalFunction = originalGetter.call(this)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

runAllTestsWrapper calls the function it gets as await runAllTests.apply(this, arguments) - wouldn't apply(this, ...) override whatever binding you do with call?
If yes, then it looks like your new hook is essentially identical to the existing one

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The difference from the previous version is that the function is no longer defined on the Runner's prototype, which means we can't instrument it directly anymore. Instead, it has become a getter, so we need to override that. To handle this, I first retrieve the original function via the originalGetter. Then, I wrap the previous hook function (runAllTestsWrapper) in another function that will act as the getter

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh, I confused call with bind. My JS is getting rusty

@Mariovido Mariovido merged commit ec0d360 into master Aug 22, 2025
688 checks passed
@Mariovido Mariovido deleted the mario.vidal/playwright_greater_1.55 branch August 22, 2025 10:18
tlhunter pushed a commit that referenced this pull request Aug 22, 2025
dd-octo-sts bot pushed a commit that referenced this pull request Aug 22, 2025
@dd-octo-sts dd-octo-sts bot mentioned this pull request Aug 22, 2025
BridgeAR pushed a commit that referenced this pull request Aug 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants