Skip to content

Commit c061fd8

Browse files
fix: Remove erroneous <br> tags from error messages (#28496)
1 parent 57ef4b8 commit c061fd8

File tree

5 files changed

+25
-6
lines changed

5 files changed

+25
-6
lines changed

cli/CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
<!-- See the ../guides/writing-the-cypress-changelog.md for details on writing the changelog. -->
2+
## 13.6.2
3+
4+
_Released 12/19/2023 (PENDING)_
5+
6+
**Bugfixes:**
7+
8+
- Fixed a regression in [`12.4.0`](https://docs.cypress.io/guides/references/changelog/12.4.0) where erroneous `<br>` tags were displaying in error messages in the Command Log making them less readable. Fixes [#28452](https://github.com/cypress-io/cypress/issues/28452).
9+
210
## 13.6.1
311

412
_Released 12/5/2023_

packages/reporter/cypress/e2e/test_errors.cy.ts

+9
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,15 @@ describe('test errors', () => {
234234
cy.wrap(runner.emit).should('be.calledWith', 'external:open', 'https://on.cypress.io/type')
235235
})
236236

237+
// https://github.com/cypress-io/cypress/issues/28452
238+
it('does not show br tags in formatted error message', () => {
239+
setError(commandErr)
240+
241+
cy.spy(runner, 'emit')
242+
243+
cy.get('.runnable-err-message').find('br').should('not.exist')
244+
})
245+
237246
// NOTE: still needs to be implemented
238247
it.skip('renders and escapes markdown with leading/trailing whitespace', () => {
239248
setError(commandErr)

packages/reporter/cypress/fixtures/command_error.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "CommandError",
3-
"message": "`foo` \\`bar\\` **baz** *fizz* ** buzz **",
3+
"message": "`foo` \\`bar\\` \n**baz** *fizz* ** buzz **",
44
"stack": "Some Error\n at foo.bar (my/app.js:2:7)\n at baz.qux (cypress/integration/foo_spec.js:5:2)\n at space (cypress/integration/a b.js:34:99)\n From previous event:\n at bar.baz (my/app.js:8:11)\n ",
55
"parsedStack": [
66
{

packages/reporter/src/commands/command.tsx

+6-4
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ import HiddenIcon from '@packages/frontend-shared/src/assets/icons/general-eye-c
2424
import PinIcon from '@packages/frontend-shared/src/assets/icons/object-pin_x16.svg'
2525
import RunningIcon from '@packages/frontend-shared/src/assets/icons/status-running_x16.svg'
2626

27-
const md = new Markdown({ breaks: true })
28-
2927
const displayName = (model: CommandModel) => model.displayName || model.name
3028
const nameClassName = (name: string) => name.replace(/(\s+)/g, '-')
3129

32-
export const formattedMessage = (message: string) => {
30+
const mdBreaks = new Markdown({ breaks: true })
31+
const md = new Markdown()
32+
33+
export const formattedMessage = (message: string, type: string) => {
3334
if (!message) return ''
3435

3536
const searchText = ['to match', 'to equal']
@@ -38,7 +39,8 @@ export const formattedMessage = (message: string) => {
3839
const matchingText = searchText.find((text) => message.includes(text))
3940
const textToConvert = [split[0].trim(), ...(matchingText ? [matchingText] : [])].join(' ')
4041
const spaceEscapedText = textToConvert.replace(/^ +/gm, (initialSpaces) => '&#32;'.repeat(initialSpaces.length)) // &#32 is the HTML entity for a space
41-
const converted = md.renderInline(spaceEscapedText)
42+
// we don't want <br> in our error messages, but allow it in Cypress.log
43+
const converted = type === 'error' ? md.renderInline(spaceEscapedText) : mdBreaks.renderInline(spaceEscapedText)
4244
const assertion = (split[1] && [`<strong>${split[1].trim()}</strong>`]) || []
4345

4446
return [converted, ...assertion].join(' ')

packages/reporter/src/errors/test-error.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ const TestError = (props: TestErrorProps) => {
9090
{groupPlaceholder}
9191
<div className='runnable-err-content'>
9292
<div className='runnable-err-message'>
93-
<span dangerouslySetInnerHTML={{ __html: formattedMessage(err.message) }} />
93+
<span dangerouslySetInnerHTML={{ __html: formattedMessage(err.message, 'error') }} />
9494
<DocsUrl url={err.docsUrl} />
9595
</div>
9696
{codeFrame && <ErrorCodeFrame codeFrame={codeFrame} />}

0 commit comments

Comments
 (0)