-
Notifications
You must be signed in to change notification settings - Fork 345
[test-optimization] [SDTEST-2548] Fix playwright instrumentation for versions >=1.55.0
#6330
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Overall package sizeSelf size: 11.89 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 |
Codecov Report✅ All modified and coverable lines are covered by tests. 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. 🚀 New features to boost your workflow:
|
BenchmarksBenchmark execution time: 2025-08-22 09:23:16 Comparing candidate commit 2db0f25 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 1273 metrics, 50 unstable metrics. |
function getProjectsFromRunner (runner) { | ||
const config = getPlaywrightConfig(runner) | ||
function getProjectsFromRunner (runner, configArg) { | ||
const config = configArg || getPlaywrightConfig(runner) |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
…versions `>=1.55.0` (#6330)
…versions `>=1.55.0` (#6330)
…versions `>=1.55.0` (#6330)
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