Skip to content

ci(test-optimization): share browser image with webdriverio - #10893

Draft
rochdev wants to merge 1 commit into
masterfrom
rochdev/webdriverio-ci-image
Draft

rochdev wants to merge 1 commit into
masterfrom
rochdev/webdriverio-ci-image

Conversation

@rochdev

@rochdev rochdev commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

What does this PR do?

  • Adds FFmpeg and a libvpx encoder check to the existing Selenium browser image.
  • Runs Selenium, Vitest's WebdriverIO provider, and all four WebdriverIO lanes in that one shared image.
  • Reuses the existing image preparation job, so this adds no CI jobs or image-build paths.

Motivation

Installing FFmpeg with apt in every WebdriverIO job is normally redundant and can become the workflow's critical path when an Ubuntu mirror is slow. A recent run spent roughly 23 minutes in that step in each of the two slowest lanes.

The shared image moves that work to a content-addressed, reusable layer. Normal workflow runs only check the image manifest and pull the cached image.

Additional Notes

The single image is rebuilt when its Dockerfile changes. Based on the earlier image build, FFmpeg adds about 82 MB compressed; Selenium pays that pull-size cost in exchange for keeping one image and one maintenance path.

Local validation:

  • actionlint .github/workflows/test-optimization.yml
  • CODEOWNERS audit
  • YAML parse
  • git diff --check
  • Codex review against origin/master (no findings)

CI validation:

  • Shared Linux/amd64 image build and push passed.
  • Cache-hit image check completed in 8 seconds.
  • Selenium, Vitest's WebdriverIO provider, and all four WebdriverIO lanes passed.
  • The representative Test Optimization workflow completed in 8m 18s.

Generated by Codex.

@dd-octo-sts

dd-octo-sts Bot commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

Overall package size

Self size: 9.68 MB
Deduped: 10.43 MB
No deduping: 10.43 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | import-in-the-middle | 3.5.1 | 127.66 kB | 528.28 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | dc-polyfill | 0.1.11 | 25.74 kB | 25.74 kB |

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

@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Pipelines  Tests

❌ Errors

Your PR has failed checks. Please review the issues below and take necessary action before merging.

🚦 1 Pipeline job failed

All Green | all-green

View more details · View in GitHub Actions

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

🔄 Datadog retried 2 tests - 2 passed on retry View in Datadog

🎯 Code Coverage (details)
• Patch Coverage: 100.00%
• Overall Coverage: 94.72% (-3.63%)

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 64f8f1f | Docs | View more details | Give us feedback!

@codecov

codecov Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.31%. Comparing base (1fae4a7) to head (64f8f1f).
⚠️ Report is 3 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #10893      +/-   ##
==========================================
+ Coverage   93.61%   95.31%   +1.69%     
==========================================
  Files        1068     1068              
  Lines      175077   175042      -35     
  Branches       72       59      -13     
==========================================
+ Hits       163906   166840    +2934     
+ Misses      11170     8202    -2968     
+ Partials        1        0       -1     
Flag Coverage Δ
ai-guard 63.69% <ø> (+0.01%) ⬆️
apm-capabilities 54.74% <ø> (ø)
apm-integrations 80.86% <ø> (?)
appsec ?
debugger 70.89% <ø> (-0.02%) ⬇️
instrumentation 55.30% <ø> (-0.01%) ⬇️
llmobs 81.41% <ø> (-0.02%) ⬇️
master-coverage 95.31% <ø> (?)
openfeature 67.38% <ø> (-0.03%) ⬇️
platform 68.42% <ø> (-0.01%) ⬇️
profiling 65.91% <ø> (-0.03%) ⬇️
serverless 64.90% <ø> (-0.02%) ⬇️
test-optimization 82.06% <ø> (+0.12%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 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

pr-commenter Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-10-22 18:33:22

Comparing candidate commit 64f8f1f in PR branch rochdev/webdriverio-ci-image with baseline commit bc24f55 in branch master.

📊 Benchmarking dashboard

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

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

Unstable benchmarks

These benchmarks have a confidence interval too wide to call a change; treat them as noise rather than signal.

scenario:appsec-appsec-enabled-20

  • unstable max_rss_usage [-67.312MB; +56.423MB] or [-27.223%; +22.819%]

scenario:appsec-iast-no-vulnerability-iast-enabled-default-config-20

  • unstable max_rss_usage [-14.292MB; +12.046MB] or [-6.538%; +5.511%]

scenario:appsec-iast-no-vulnerability-iast-enabled-default-config-26

  • unstable max_rss_usage [-47.016MB; +33.416MB] or [-16.464%; +11.701%]

scenario:appsec-iast-with-vulnerability-iast-enabled-default-config-20

  • unstable max_rss_usage [-9.057MB; +29.742MB] or [-2.732%; +8.973%]

scenario:appsec-iast-with-vulnerability-iast-enabled-default-config-26

  • unstable max_rss_usage [-29.145MB; +20.361MB] or [-9.404%; +6.570%]

scenario:debugger-enabled-but-breakpoint-not-hit-20

  • unstable cpu_user_time [-352.429ms; +626.566ms] or [-3.815%; +6.783%]
  • unstable execution_time [-350.846ms; +627.253ms] or [-3.796%; +6.787%]

scenario:dogstatsd-aggregated-20

  • unstable cpu_user_time [-113.213ms; +184.471ms] or [-5.545%; +9.034%]
  • unstable execution_time [-114.295ms; +183.221ms] or [-5.497%; +8.812%]
  • unstable throughput [-778394.677op/s; +463131.406op/s] or [-6.645%; +3.954%]

scenario:encoders-0.4-immediate-flush-20

  • unstable max_rss_usage [-12.444MB; +7.872MB] or [-14.592%; +9.231%]

scenario:openfeature-scale-full-24

  • unstable max_rss_usage [-50.472MB; +16.883MB] or [-16.528%; +5.529%]

scenario:openfeature-scale-full-26

  • unstable max_rss_usage [-22.473MB; +40.037MB] or [-9.446%; +16.828%]

scenario:plugin-elasticsearch-search-20

  • unstable cpu_user_time [-183.487ms; +283.909ms] or [-4.945%; +7.651%]
  • unstable execution_time [-183.204ms; +283.032ms] or [-4.936%; +7.626%]
  • unstable throughput [-52467.453op/s; +34492.669op/s] or [-7.153%; +4.702%]

@rochdev
rochdev force-pushed the rochdev/webdriverio-ci-image branch from ec2e4eb to 2b4407b Compare October 22, 2026 17:24
@rochdev rochdev changed the title ci(test-optimization): cache webdriverio browser tools ci(test-optimization): share browser image with webdriverio Oct 22, 2026
@rochdev
rochdev force-pushed the rochdev/webdriverio-ci-image branch from 2b4407b to b23c5fe Compare October 22, 2026 17:55
Install and validate FFmpeg in the existing Selenium image so WebdriverIO jobs avoid apt without adding another image or CI job.
@rochdev
rochdev force-pushed the rochdev/webdriverio-ci-image branch from b23c5fe to 64f8f1f Compare October 22, 2026 18:20

This branch has not been deployed

No deployments
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.

1 participant