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}
- +
{codeFrame && } diff --git a/yarn.lock b/yarn.lock index 47dc3fc521cd..cc41777b7945 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2306,10 +2306,10 @@ dependencies: "@cypress-design/css" "^0.15.1" -"@cypress-design/vue-button@^0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@cypress-design/vue-button/-/vue-button-0.10.1.tgz#5dd3ca6469aad493c77a45a0d1401da0b8ac4540" - integrity sha512-inzTmkO5Vvw288vdVFKlKUEWJO2g1EvzUMCQMPZ1xZ7wLBl4FtkdEvRBYINiTs+O211FunHuxIjNwRjWkQhOHA== +"@cypress-design/vue-button@^0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@cypress-design/vue-button/-/vue-button-0.10.2.tgz#40ca760dc76ed9516a2add4c59f06f3d5da96986" + integrity sha512-PwwdLiY3gT0qqtkfY2NJw02/nu9/U3Cea2RxdCJvq0xgVSag9w5idWe1puh6BzSNlHrjsAgdtuL+WOByGNwHJg== dependencies: "@cypress-design/constants-button" "*" @@ -16339,24 +16339,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -got@11.8.5: - version "11.8.5" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" - integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -got@^11.7.0, got@^11.8.5: +got@11.8.6, got@^11.7.0, got@^11.8.5: version "11.8.6" resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==