Skip to content

fix: Emit browser custom command beforeCommand to fix broken reports#14581

Merged
christian-bromann merged 14 commits intowebdriverio:mainfrom
dprevost-LMI:fix-reports-broke-by-missing-beforeCommand
Jul 8, 2025
Merged

fix: Emit browser custom command beforeCommand to fix broken reports#14581
christian-bromann merged 14 commits intowebdriverio:mainfrom
dprevost-LMI:fix-reports-broke-by-missing-beforeCommand

Conversation

@dprevost-LMI
Copy link
Contributor

@dprevost-LMI dprevost-LMI commented Jun 20, 2025

Proposed changes

As described in this issue, when using browser custom command, it can break reports since we only emit a result event, which translates to triggering only a onAfterCommand, which stops a step not belonging to that command.

Now, we emit the command so that onBeforeCommand gets called correctly, and we also ensure, with the catch, that onAfterCommand is always called. We have also reviewed the emitted data to align with the already existing command emitting when doing a HTTP request/response

Other:

  • Fix reporter attachJSON to ensure it outputs the proper JSON file type when needed and any compatible JSON in a beautified format
  • On afterCommand, stop generating a response file if the result or error is undefined

fixes #14580

Types of changes

  • Polish (an improvement for an existing feature)
  • Bugfix (non-breaking change which fixes an issue)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist

Backport Request

//: # (The current main branch is the development branch for WebdriverIO v9. If your change should be released to the current major version of WebdriverIO (v8), please raise another PR with the same changes against the v8 branch.)

  • This change is solely for v9 and doesn't need to be back-ported

Further comments

Reviewers: @webdriverio/project-committers

@pkg-pr-new
Copy link

pkg-pr-new bot commented Jun 20, 2025

Open in StackBlitz

eslint-plugin-wdio

npm i https://pkg.pr.new/webdriverio/webdriverio/eslint-plugin-wdio@14581

@wdio/allure-reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/allure-reporter@14581

@wdio/appium-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/appium-service@14581

@wdio/browser-runner

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/browser-runner@14581

@wdio/browserstack-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/browserstack-service@14581

@wdio/cli

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/cli@14581

@wdio/concise-reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/concise-reporter@14581

@wdio/config

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/config@14581

@wdio/cucumber-framework

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/cucumber-framework@14581

@wdio/dot-reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/dot-reporter@14581

@wdio/firefox-profile-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/firefox-profile-service@14581

@wdio/globals

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/globals@14581

@wdio/jasmine-framework

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/jasmine-framework@14581

@wdio/json-reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/json-reporter@14581

@wdio/junit-reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/junit-reporter@14581

@wdio/lighthouse-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/lighthouse-service@14581

@wdio/local-runner

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/local-runner@14581

@wdio/logger

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/logger@14581

@wdio/mocha-framework

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/mocha-framework@14581

@wdio/protocols

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/protocols@14581

@wdio/repl

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/repl@14581

@wdio/reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/reporter@14581

@wdio/runner

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/runner@14581

@wdio/sauce-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/sauce-service@14581

@wdio/shared-store-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/shared-store-service@14581

@wdio/smoke-test-cjs-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/smoke-test-cjs-service@14581

@wdio/smoke-test-reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/smoke-test-reporter@14581

@wdio/smoke-test-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/smoke-test-service@14581

@wdio/spec-reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/spec-reporter@14581

@wdio/static-server-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/static-server-service@14581

@wdio/sumologic-reporter

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/sumologic-reporter@14581

@wdio/testingbot-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/testingbot-service@14581

@wdio/types

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/types@14581

@wdio/utils

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/utils@14581

@wdio/webdriver-mock-service

npm i https://pkg.pr.new/webdriverio/webdriverio/@wdio/webdriver-mock-service@14581

webdriver

npm i https://pkg.pr.new/webdriverio/webdriverio/webdriver@14581

webdriverio

npm i https://pkg.pr.new/webdriverio/webdriverio@14581

commit: d33426f

@dprevost-LMI dprevost-LMI force-pushed the fix-reports-broke-by-missing-beforeCommand branch from a1ebc24 to 692884c Compare June 21, 2025 19:28
@dprevost-LMI dprevost-LMI force-pushed the fix-reports-broke-by-missing-beforeCommand branch from 268dd4e to 7650f22 Compare June 21, 2025 21:45
@dprevost-LMI dprevost-LMI marked this pull request as ready for review June 21, 2025 22:11
@dprevost-LMI dprevost-LMI force-pushed the fix-reports-broke-by-missing-beforeCommand branch from 38e6a21 to 3180e1d Compare June 25, 2025 10:55
@christian-bromann christian-bromann added the PR: Bug Fix 🐛 PRs that contain bug fixes label Jul 1, 2025
@christian-bromann
Copy link
Member

Once I managed to fix the build (see #14592) I can update the branch and merge once tests pass. Sorry for the delay.

Copy link
Member

@christian-bromann christian-bromann left a comment

Choose a reason for hiding this comment

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

Awesome 🎉

@christian-bromann christian-bromann merged commit 97c8f8a into webdriverio:main Jul 8, 2025
43 checks passed
@wdio-bot
Copy link
Contributor

wdio-bot commented Jul 8, 2025

Hey dprevost-LMI 👋

Thank you for your contribution to WebdriverIO! Your pull request has been marked as an "Expensable" contribution.

We've sent you an email with further instructions on how to claim your expenses from our development fund.
Please make sure to check your spam folder as well. If you have any questions, feel free to reach out to us at expense@webdriver.io or in the contributing channel on Discord.

We are looking forward to more contributions from you in the future 🙌

Have a nice day,
The WebdriverIO Team 🤖

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Expensable $35 💸 PR: Bug Fix 🐛 PRs that contain bug fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[🐛 Bug]: Custom command triggers only Reporter.onAfterCommand without the onBeforeCommand breaking reports

3 participants