diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md
index 177c29e32d74..1a6cac0810c1 100644
--- a/cli/CHANGELOG.md
+++ b/cli/CHANGELOG.md
@@ -1,4 +1,12 @@
+## 13.6.2
+
+_Released 12/19/2023 (PENDING)_
+
+**Bugfixes:**
+
+- Fixed a regression in [`12.4.0`](https://docs.cypress.io/guides/references/changelog/12.4.0) where erroneous `
` tags were displaying in error messages in the Command Log making them less readable. Fixes [#28452](https://github.com/cypress-io/cypress/issues/28452).
+
## 13.6.1
_Released 12/5/2023_
diff --git a/package.json b/package.json
index 8576cb33ed98..93e19fa435b0 100644
--- a/package.json
+++ b/package.json
@@ -162,7 +162,7 @@
"fs-extra": "9.1.0",
"getenv": "^1.0.0",
"glob": "7.1.6",
- "got": "11.8.5",
+ "got": "11.8.6",
"graphql": "^15.5.1",
"graphql-executor": "0.0.23",
"gulp": "4.0.2",
diff --git a/packages/app/package.json b/packages/app/package.json
index 229355725c37..37d38558ae3c 100644
--- a/packages/app/package.json
+++ b/packages/app/package.json
@@ -21,7 +21,7 @@
},
"dependencies": {},
"devDependencies": {
- "@cypress-design/vue-button": "^0.10.1",
+ "@cypress-design/vue-button": "^0.10.2",
"@cypress-design/vue-icon": "^0.26.0",
"@cypress-design/vue-statusicon": "^0.5.0",
"@cypress-design/vue-tabs": "^0.5.1",
diff --git a/packages/reporter/cypress/e2e/test_errors.cy.ts b/packages/reporter/cypress/e2e/test_errors.cy.ts
index a6f4d2fd1dc1..f9a6ad35b3df 100644
--- a/packages/reporter/cypress/e2e/test_errors.cy.ts
+++ b/packages/reporter/cypress/e2e/test_errors.cy.ts
@@ -234,6 +234,15 @@ describe('test errors', () => {
cy.wrap(runner.emit).should('be.calledWith', 'external:open', 'https://on.cypress.io/type')
})
+ // https://github.com/cypress-io/cypress/issues/28452
+ it('does not show br tags in formatted error message', () => {
+ setError(commandErr)
+
+ cy.spy(runner, 'emit')
+
+ cy.get('.runnable-err-message').find('br').should('not.exist')
+ })
+
// NOTE: still needs to be implemented
it.skip('renders and escapes markdown with leading/trailing whitespace', () => {
setError(commandErr)
diff --git a/packages/reporter/cypress/fixtures/command_error.json b/packages/reporter/cypress/fixtures/command_error.json
index 444d8695361d..1f5004f3d227 100644
--- a/packages/reporter/cypress/fixtures/command_error.json
+++ b/packages/reporter/cypress/fixtures/command_error.json
@@ -1,6 +1,6 @@
{
"name": "CommandError",
- "message": "`foo` \\`bar\\` **baz** *fizz* ** buzz **",
+ "message": "`foo` \\`bar\\` \n**baz** *fizz* ** buzz **",
"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 ",
"parsedStack": [
{
diff --git a/packages/reporter/src/commands/command.tsx b/packages/reporter/src/commands/command.tsx
index b63b52e975cf..116ffd8e3332 100644
--- a/packages/reporter/src/commands/command.tsx
+++ b/packages/reporter/src/commands/command.tsx
@@ -24,12 +24,13 @@ import HiddenIcon from '@packages/frontend-shared/src/assets/icons/general-eye-c
import PinIcon from '@packages/frontend-shared/src/assets/icons/object-pin_x16.svg'
import RunningIcon from '@packages/frontend-shared/src/assets/icons/status-running_x16.svg'
-const md = new Markdown({ breaks: true })
-
const displayName = (model: CommandModel) => model.displayName || model.name
const nameClassName = (name: string) => name.replace(/(\s+)/g, '-')
-export const formattedMessage = (message: string) => {
+const mdBreaks = new Markdown({ breaks: true })
+const md = new Markdown()
+
+export const formattedMessage = (message: string, type: string) => {
if (!message) return ''
const searchText = ['to match', 'to equal']
@@ -38,7 +39,8 @@ export const formattedMessage = (message: string) => {
const matchingText = searchText.find((text) => message.includes(text))
const textToConvert = [split[0].trim(), ...(matchingText ? [matchingText] : [])].join(' ')
const spaceEscapedText = textToConvert.replace(/^ +/gm, (initialSpaces) => ' '.repeat(initialSpaces.length)) // is the HTML entity for a space
- const converted = md.renderInline(spaceEscapedText)
+ // we don't want
in our error messages, but allow it in Cypress.log
+ const converted = type === 'error' ? md.renderInline(spaceEscapedText) : mdBreaks.renderInline(spaceEscapedText)
const assertion = (split[1] && [`${split[1].trim()}`]) || []
return [converted, ...assertion].join(' ')
diff --git a/packages/reporter/src/errors/test-error.tsx b/packages/reporter/src/errors/test-error.tsx
index 0526e1be31af..cfac67a02e57 100644
--- a/packages/reporter/src/errors/test-error.tsx
+++ b/packages/reporter/src/errors/test-error.tsx
@@ -90,7 +90,7 @@ const TestError = (props: TestErrorProps) => {
{groupPlaceholder}