From f025cc8756cafca08232a9a88a4e520863bea236 Mon Sep 17 00:00:00 2001 From: Emily Rohrbough Date: Tue, 8 Nov 2022 09:19:13 -0600 Subject: [PATCH 1/6] feat: add warned command state to use for recreated sessions --- .../e2e/commands/sessions/sessions.cy.js | 16 +++- .../driver/src/cy/commands/sessions/index.ts | 15 ++-- .../driver/src/cy/commands/sessions/utils.ts | 18 ++++ packages/reporter/cypress/e2e/commands.cy.ts | 2 +- packages/reporter/src/commands/command.cy.tsx | 82 ++++++++++++++++--- packages/reporter/src/commands/command.tsx | 3 +- packages/reporter/src/commands/commands.scss | 25 ++++++ packages/reporter/src/lib/tag.cy.tsx | 1 + packages/reporter/src/lib/tag.scss | 7 +- packages/reporter/src/lib/variables.scss | 7 +- .../reporter/src/sessions/sessions-model.ts | 9 +- .../reporter/src/sessions/sessions.cy.tsx | 35 +++++++- packages/reporter/src/sessions/sessions.tsx | 16 ++-- packages/reporter/src/sessions/utils.ts | 16 ++++ packages/types/src/driver.ts | 2 +- 15 files changed, 212 insertions(+), 42 deletions(-) create mode 100644 packages/reporter/src/sessions/utils.ts diff --git a/packages/driver/cypress/e2e/commands/sessions/sessions.cy.js b/packages/driver/cypress/e2e/commands/sessions/sessions.cy.js index f7cdb6e4af74..f4b3fb1d7eee 100644 --- a/packages/driver/cypress/e2e/commands/sessions/sessions.cy.js +++ b/packages/driver/cypress/e2e/commands/sessions/sessions.cy.js @@ -217,6 +217,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.deep.contain({ name: 'session', + state: 'passed', id: sessionGroupId, sessionInfo: { id: 'session-1', @@ -291,6 +292,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.deep.contain({ name: 'session', + state: 'passed', id: sessionGroupId, sessionInfo: { id: sessionId, @@ -345,6 +347,7 @@ describe('cy.session', { retries: 0 }, () => { expect(err.message).to.contain('Your `cy.session` **validate** callback returned false') expect(logs[0].get()).to.deep.contain({ name: 'session', + state: 'failed', id: sessionGroupId, sessionInfo: { id: `session-${Cypress.state('test').id}`, @@ -425,6 +428,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.contain({ name: 'session', + state: 'passed', id: sessionGroupId, }) @@ -480,6 +484,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.contain({ name: 'session', + state: 'passed', id: sessionGroupId, }) @@ -525,7 +530,7 @@ describe('cy.session', { retries: 0 }, () => { sessionId = `session-${Cypress.state('test').id}` cy.session(sessionId, setup, { validate }) .then(() => { - // reset and only test restored session + // reset and only test restored session resetMocks() validate.callsFake(() => { if (validate.callCount === 1) { @@ -554,6 +559,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.contain({ name: 'session', + state: 'warned', id: sessionGroupId, }) @@ -647,6 +653,7 @@ describe('cy.session', { retries: 0 }, () => { expect(logs[0].get()).to.contain({ name: 'session', + state: 'failed', id: sessionGroupId, }) @@ -875,6 +882,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.deep.contain({ name: 'session', + state: 'passed', id: sessionGroupId, sessionInfo: { id: 'session-1', @@ -946,6 +954,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.deep.contain({ name: 'session', + state: 'passed', id: sessionGroupId, sessionInfo: { id: sessionId, @@ -998,6 +1007,7 @@ describe('cy.session', { retries: 0 }, () => { expect(err.message).to.contain('Your `cy.session` **validate** callback returned false') expect(logs[0].get()).to.deep.contain({ name: 'session', + state: 'failed', id: sessionGroupId, sessionInfo: { id: `session-${Cypress.state('test').id}`, @@ -1075,6 +1085,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.contain({ name: 'session', + state: 'passed', id: sessionGroupId, }) @@ -1132,6 +1143,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.contain({ name: 'session', + state: 'passed', id: sessionGroupId, }) @@ -1208,6 +1220,7 @@ describe('cy.session', { retries: 0 }, () => { it('groups session logs correctly', () => { expect(logs[0].get()).to.contain({ name: 'session', + state: 'warned', id: sessionGroupId, }) @@ -1302,6 +1315,7 @@ describe('cy.session', { retries: 0 }, () => { expect(logs[0].get()).to.contain({ name: 'session', + state: 'failed', id: sessionGroupId, }) diff --git a/packages/driver/src/cy/commands/sessions/index.ts b/packages/driver/src/cy/commands/sessions/index.ts index 07395107c1a9..9daedc6de9f1 100644 --- a/packages/driver/src/cy/commands/sessions/index.ts +++ b/packages/driver/src/cy/commands/sessions/index.ts @@ -7,7 +7,9 @@ import SessionsManager from './manager' import { getConsoleProps, navigateAboutBlank, + statusMap, } from './utils' + import type { ServerSessionData } from '@packages/types' type SessionData = Cypress.Commands.Session.SessionData @@ -22,8 +24,6 @@ type SessionData = Cypress.Commands.Session.SessionData */ export default function (Commands, Cypress, cy) { - // @ts-ignore - function throwIfNoSessionSupport () { if (!Cypress.config('experimentalSessionAndOrigin')) { $errUtils.throwErrByPath('sessions.experimentNotEnabled', { @@ -151,6 +151,7 @@ export default function (Commands, Cypress, cy) { function setSessionLogStatus (status: string) { _log.set({ + state: statusMap.commandState(status), sessionInfo: { id: session.id, isGlobalSession: session.cacheAcrossSpecs, @@ -360,10 +361,10 @@ export default function (Commands, Cypress, cy) { .then(() => validateSession(existingSession)) .then((isValidSession: boolean) => { if (!isValidSession) { - return + return 'failed' } - setSessionLogStatus(recreateSession ? 'recreated' : 'created') + return recreateSession ? 'recreated' : 'created' }) } @@ -387,7 +388,7 @@ export default function (Commands, Cypress, cy) { return createSessionWorkflow(existingSession, true) } - setSessionLogStatus('restored') + return 'restored' }) } @@ -423,8 +424,8 @@ export default function (Commands, Cypress, cy) { } return restoreSessionWorkflow(session) - }).then(() => { - _log.set({ state: 'passed' }) + }).then((status: string) => { + setSessionLogStatus(status) }) }) }, diff --git a/packages/driver/src/cy/commands/sessions/utils.ts b/packages/driver/src/cy/commands/sessions/utils.ts index 3932cd1c439d..def1345687e1 100644 --- a/packages/driver/src/cy/commands/sessions/utils.ts +++ b/packages/driver/src/cy/commands/sessions/utils.ts @@ -193,10 +193,28 @@ function navigateAboutBlank (session: boolean = true) { return Cypress.action('cy:visit:blank', { type: session ? 'session' : 'session-lifecycle' }) as unknown as Promise } +const statusMap = { + commandState: (status: string) => { + switch (status) { + case 'failed': + return 'failed' + case 'recreating': + case 'recreated': + return 'warned' + case 'created': + case 'restored': + return 'passed' + default: + return 'pending' + } + }, +} + export { getCurrentOriginStorage, setPostMessageLocalStorage, getConsoleProps, getPostMessageLocalStorage, navigateAboutBlank, + statusMap, } diff --git a/packages/reporter/cypress/e2e/commands.cy.ts b/packages/reporter/cypress/e2e/commands.cy.ts index fffa69a6153d..bc4eafc90940 100644 --- a/packages/reporter/cypress/e2e/commands.cy.ts +++ b/packages/reporter/cypress/e2e/commands.cy.ts @@ -847,7 +847,7 @@ describe('commands', { viewportHeight: 1000 }, () => { }) it('shows a tooltip', () => { - cy.get('.command-name-within').click() + cy.get('.command-name-within').click('top') cy.get('.cy-tooltip').should('have.text', 'Printed output to your console') }) diff --git a/packages/reporter/src/commands/command.cy.tsx b/packages/reporter/src/commands/command.cy.tsx index aa8867a54163..73aa58a1884d 100644 --- a/packages/reporter/src/commands/command.cy.tsx +++ b/packages/reporter/src/commands/command.cy.tsx @@ -1,31 +1,91 @@ import React from 'react' import Command from './command' import CommandModel from './command-model' +import type { SessionStatus } from '../sessions/utils' +import type { TestState } from '@packages/types' describe('commands', () => { + describe('test states', () => { + it('warned command', () => { + cy.mount( +
+ +
, + ) + + cy.percySnapshot() + }) + }) + describe('sessionPill', () => { - const statusList = [ - 'creating', - 'created', - 'restoring', - 'restored', - 'recreating', - 'recreated', - 'failed', + const statusList: Array<{ + state: TestState + status: SessionStatus + }> = [ + { + state: 'pending', + status: 'creating', + }, + { + state: 'passed', + status: 'created', + }, + { + state: 'pending', + status: 'restoring', + }, + { + state: 'passed', + status: 'restored', + }, + { + state: 'warned', + status: 'recreating', + }, + { + state: 'warned', + status: 'recreated', + }, + { + state: 'failed', + status: 'failed', + }, ] it('session status in command', () => { cy.mount(
- {statusList.map((status, index) => ( + {statusList.map(({ state, status }, index) => ( { {isSessionCommand && ( )} {!model.visible && ( diff --git a/packages/reporter/src/commands/commands.scss b/packages/reporter/src/commands/commands.scss index ecc29616a416..1b7e5e56ebbd 100644 --- a/packages/reporter/src/commands/commands.scss +++ b/packages/reporter/src/commands/commands.scss @@ -252,6 +252,30 @@ } } + .command-state-warned { + color: $warn-text; + + &:not(.command-type-system) { + border-left: $warn-border; + } + + .command-number-column, + .command-method, + .command-message { + color: $warn-text; + } + + .command-group { + border-color: $warn-text; + @include nested-command-dashes($warn-text); + + .command-group-block { + border-color: $warn-text; + @include nested-command-dashes($warn-text); + } + } + } + .command-state-failed { color: $err-header-text; @@ -286,6 +310,7 @@ } // Custom Styles for Specific Commands + // note: assert does not support warned state .command-name-assert { .command-method { span { diff --git a/packages/reporter/src/lib/tag.cy.tsx b/packages/reporter/src/lib/tag.cy.tsx index 5a3a1e226583..1390c618b155 100644 --- a/packages/reporter/src/lib/tag.cy.tsx +++ b/packages/reporter/src/lib/tag.cy.tsx @@ -11,6 +11,7 @@ describe('Tag', () => { const statuses = [ 'successful-status', + 'warned-status', 'failed-status', ] diff --git a/packages/reporter/src/lib/tag.scss b/packages/reporter/src/lib/tag.scss index 0951e7f94896..46c7cec4df53 100644 --- a/packages/reporter/src/lib/tag.scss +++ b/packages/reporter/src/lib/tag.scss @@ -37,9 +37,14 @@ color: $jade-300; } + &.warned-status { + background-color: $gray-1000; + border: $gray-900 1px solid; + color: $warn-text; + } + &.failed-status { background-color: $red-500; - font-weight: 500; } &.reporter-tag-has-count { diff --git a/packages/reporter/src/lib/variables.scss b/packages/reporter/src/lib/variables.scss index 5dc085420b5d..a7e778827755 100644 --- a/packages/reporter/src/lib/variables.scss +++ b/packages/reporter/src/lib/variables.scss @@ -104,7 +104,6 @@ $fail: $red-400; $pending: $indigo-400; $pinned: $purple-400; $retried: $orange-400; -$yellow-medium: $orange-800; $link-text: $indigo-600; @@ -118,10 +117,8 @@ $err-text: $red-400; $reporter-section-background: #171926; // not a brand color -$warn-background: $red-1000; -$warn-header-background: $orange-1000; -$warn-header-text: $orange-700; -$warn-text: $orange-600; +$warn-border: 2px solid $orange-300; +$warn-text: $orange-300; $header-height: 64px; $reporter-contents-min-width: 170px; diff --git a/packages/reporter/src/sessions/sessions-model.ts b/packages/reporter/src/sessions/sessions-model.ts index 8b1cf2b77f5c..63b90cb0e4b6 100644 --- a/packages/reporter/src/sessions/sessions-model.ts +++ b/packages/reporter/src/sessions/sessions-model.ts @@ -1,5 +1,7 @@ import { observable } from 'mobx' import Instrument, { InstrumentProps } from '../instruments/instrument-model' +import { determineTagType } from './utils' +import type { SessionStatus } from './utils' export interface SessionProps extends InstrumentProps { name: string @@ -8,7 +10,7 @@ export interface SessionProps extends InstrumentProps { sessionInfo: { id: string isGlobalSession: boolean - status: 'creating' | 'created' | 'restored' |'restored' | 'recreating' | 'recreated' | 'failed' + status: SessionStatus } } @@ -16,14 +18,16 @@ export default class Session extends Instrument { @observable name: string @observable status: string @observable isGlobalSession: boolean = false + @observable tagType: string constructor (props: SessionProps) { super(props) - const { sessionInfo: { isGlobalSession, id, status } } = props + const { state, sessionInfo: { isGlobalSession, id, status } } = props this.isGlobalSession = isGlobalSession this.name = id this.status = status + this.tagType = determineTagType(state) } update (props: Partial) { @@ -31,5 +35,6 @@ export default class Session extends Instrument { this.status = sessionInfo?.status || '' this.state = state || '' + this.tagType = determineTagType(state || '') } } diff --git a/packages/reporter/src/sessions/sessions.cy.tsx b/packages/reporter/src/sessions/sessions.cy.tsx index 64206563ab50..5079fad1e0ff 100644 --- a/packages/reporter/src/sessions/sessions.cy.tsx +++ b/packages/reporter/src/sessions/sessions.cy.tsx @@ -41,6 +41,20 @@ describe('sessions instrument panel', { viewportWidth: 400 }, () => { }, }) + const warnedSpecSession = new SessionsModel({ + name: 'session', + state: 'warned', + type: 'parent', + testId: '1', + id: 3, + sessionInfo: { + id: 'spec_session_warned', + isGlobalSession: false, + status: 'recreated', + }, + testCurrentRetry: 1, + }) + const failedSpecSession = new SessionsModel({ name: 'session', state: 'failed', @@ -56,7 +70,7 @@ describe('sessions instrument panel', { viewportWidth: 400 }, () => { }) beforeEach(() => { - cy.mount() + cy.mount() cy.get('.sessions-container').should('exist') cy.get('.hook-header > .collapsible-header').as('header') @@ -74,7 +88,7 @@ describe('sessions instrument panel', { viewportWidth: 400 }, () => { cy.get('@header').should('have.attr', 'aria-expanded', 'true') cy.get('.session-item') - .should('have.length', 3) + .should('have.length', 4) .should('be.visible') cy.percySnapshot() @@ -106,11 +120,24 @@ describe('sessions instrument panel', { viewportWidth: 400 }, () => { cy.percySnapshot() }) - it('has failed session item', () => { + it('has warned session item', () => { cy.get('@header').click() cy.get('.session-item') .eq(2) + .within(() => { + cy.contains('spec_session_warned').should('have.class', 'spec-session') + cy.get('.session-status').should('have.class', 'warned-status') + }) + + cy.percySnapshot() + }) + + it('has failed session item', () => { + cy.get('@header').click() + + cy.get('.session-item') + .eq(3) .within(() => { cy.contains('spec_session_failed').should('have.class', 'spec-session') cy.get('.global-session-icon').should('not.exist') @@ -125,7 +152,7 @@ describe('sessions instrument panel', { viewportWidth: 400 }, () => { cy.get('@header').click() - cy.get('.session-item').eq(2).click() + cy.get('.session-item').eq(3).click() cy.get('.cy-tooltip') .should('have.text', 'Printed output to your console') diff --git a/packages/reporter/src/sessions/sessions.tsx b/packages/reporter/src/sessions/sessions.tsx index bf91ae8a648d..dd38395afd8e 100644 --- a/packages/reporter/src/sessions/sessions.tsx +++ b/packages/reporter/src/sessions/sessions.tsx @@ -13,7 +13,9 @@ export interface SessionPanelProps { model: Record } -const SessionRow = ({ name, isGlobalSession, id, state, status, testId }: SessionsModel) => { +const SessionRow = (model: SessionsModel) => { + const { name, isGlobalSession, id, status, testId } = model + const printToConsole = (id) => { events.emit('show:command', testId, id) } @@ -31,13 +33,11 @@ const SessionRow = ({ name, isGlobalSession, id, state, status, testId }: Sessio {isGlobalSession && } {name} - - - +
) diff --git a/packages/reporter/src/sessions/utils.ts b/packages/reporter/src/sessions/utils.ts new file mode 100644 index 000000000000..34fecd367076 --- /dev/null +++ b/packages/reporter/src/sessions/utils.ts @@ -0,0 +1,16 @@ +function determineTagType (state: string) { + switch (state) { + case 'failed': + return 'failed-status' + case 'warned': + return 'warned-status' + default: + return 'successful-status' + } +} + +export type SessionStatus = 'creating' | 'created' | 'restoring' |'restored' | 'recreating' | 'recreated' | 'failed' + +export { + determineTagType, +} diff --git a/packages/types/src/driver.ts b/packages/types/src/driver.ts index 3335a1bb926e..8392302421dc 100644 --- a/packages/types/src/driver.ts +++ b/packages/types/src/driver.ts @@ -43,4 +43,4 @@ export interface CachedTestState { export type Instrument = 'agent' | 'command' | 'route' -export type TestState = 'active' | 'failed' | 'pending' | 'passed' | 'processing' +export type TestState = 'active' | 'failed' | 'pending' | 'passed' | 'processing' | 'warned' From a5f5257c5f65b101186ecc2d4e45479a49011232 Mon Sep 17 00:00:00 2001 From: Emily Rohrbough Date: Thu, 10 Nov 2022 11:36:09 -0600 Subject: [PATCH 2/6] fix merge conflict override --- packages/reporter/src/sessions/sessions-model.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/reporter/src/sessions/sessions-model.ts b/packages/reporter/src/sessions/sessions-model.ts index a64253d3d922..aa5a596a902e 100644 --- a/packages/reporter/src/sessions/sessions-model.ts +++ b/packages/reporter/src/sessions/sessions-model.ts @@ -31,10 +31,9 @@ export default class Session extends Instrument { } update (props: Partial) { - const { sessionInfo } = props + const { state, sessionInfo } = props this.status = sessionInfo?.status || '' - this.state = state || '' this.tagType = determineTagType(state || '') } } From f02567f6f06c5805814b2c471125d159f4deeb6c Mon Sep 17 00:00:00 2001 From: Emily Rohrbough Date: Tue, 15 Nov 2022 09:51:41 -0600 Subject: [PATCH 3/6] Update packages/reporter/src/commands/commands.scss Co-authored-by: Bill Glesias --- packages/reporter/src/commands/commands.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/reporter/src/commands/commands.scss b/packages/reporter/src/commands/commands.scss index 1b7e5e56ebbd..0d124e2c8a2f 100644 --- a/packages/reporter/src/commands/commands.scss +++ b/packages/reporter/src/commands/commands.scss @@ -310,7 +310,7 @@ } // Custom Styles for Specific Commands - // note: assert does not support warned state + // NOTE: assert does not support warned state .command-name-assert { .command-method { span { From 4816ac8542c3b4271b7fd6691019f874c5879f5d Mon Sep 17 00:00:00 2001 From: Emily Rohrbough Date: Tue, 15 Nov 2022 09:52:56 -0600 Subject: [PATCH 4/6] PR feedback --- .../driver/src/cy/commands/sessions/index.ts | 21 +++++++------------ .../driver/src/cy/commands/sessions/utils.ts | 8 +++++++ packages/reporter/src/errors/errors.scss | 13 ++++++++---- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/packages/driver/src/cy/commands/sessions/index.ts b/packages/driver/src/cy/commands/sessions/index.ts index 40e7f2683de7..b95c23d16d52 100644 --- a/packages/driver/src/cy/commands/sessions/index.ts +++ b/packages/driver/src/cy/commands/sessions/index.ts @@ -8,6 +8,7 @@ import SessionsManager from './manager' import { getConsoleProps, navigateAboutBlank, + SESSION_STEPS, statusMap, } from './utils' @@ -39,8 +40,6 @@ export default function (Commands, Cypress, cy) { const sessionsManager = new SessionsManager(Cypress, cy) const sessions = sessionsManager.sessions - type SESSION_STEPS = 'create' | 'restore' | 'recreate' | 'validate' - Cypress.on('run:start', () => { // @ts-ignore Object.values(Cypress.state('activeSessions') || {}).forEach((sessionData: ServerSessionData) => { @@ -326,11 +325,7 @@ export default function (Commands, Cypress, cy) { // skip all commands between this command which errored and _commandToRunAfterValidation for (let i = cy.queue.index; i < index; i++) { - const cmd = commands[i] - - if (!cmd.get('restore-within')) { - commands[i].skip() - } + commands[i].skip() } // restore within subject back to the original subject used when @@ -374,7 +369,7 @@ export default function (Commands, Cypress, cy) { } const failValidation = (err) => { - if (step === 'restore') { + if (step === SESSION_STEPS.restore) { enhanceErr(err) // move to recreate session flow @@ -465,19 +460,19 @@ export default function (Commands, Cypress, cy) { */ const restoreSessionWorkflow = (existingSession: SessionData) => { return cy.then(async () => { - setSessionLogStatus('restoring') + setSessionLogStatus(statusMap.inProgress(SESSION_STEPS.restore)) await navigateAboutBlank() await sessions.clearCurrentSessionData() return restoreSession(existingSession) }) - .then(() => validateSession(existingSession, 'restore')) + .then(() => validateSession(existingSession, SESSION_STEPS.restore)) .then((isValidSession: boolean) => { if (!isValidSession) { - return createSessionWorkflow(existingSession, 'recreate') + return createSessionWorkflow(existingSession, SESSION_STEPS.recreate) } - return 'restored' + return statusMap.complete(SESSION_STEPS.restore) }) } @@ -508,7 +503,7 @@ export default function (Commands, Cypress, cy) { _.extend(session, _.omit(serverStoredSession, 'setup', 'validate')) session.hydrated = true } else { - return createSessionWorkflow(session, 'create') + return createSessionWorkflow(session, SESSION_STEPS.create) } } diff --git a/packages/driver/src/cy/commands/sessions/utils.ts b/packages/driver/src/cy/commands/sessions/utils.ts index 98d35d686bea..71a879ea9f59 100644 --- a/packages/driver/src/cy/commands/sessions/utils.ts +++ b/packages/driver/src/cy/commands/sessions/utils.ts @@ -203,6 +203,13 @@ function navigateAboutBlank (session: boolean = true) { return Cypress.action('cy:visit:blank', { type: session ? 'session' : 'session-lifecycle' }) as unknown as Promise } +const enum SESSION_STEPS { + create = 'create', + restore = 'restore', + recreate = 'recreate', + validate = 'validate', +} + const statusMap = { commandState: (status: string) => { switch (status) { @@ -264,5 +271,6 @@ export { getConsoleProps, getPostMessageLocalStorage, navigateAboutBlank, + SESSION_STEPS, statusMap, } diff --git a/packages/reporter/src/errors/errors.scss b/packages/reporter/src/errors/errors.scss index 1f3f5b2056ba..d18932bbbafe 100644 --- a/packages/reporter/src/errors/errors.scss +++ b/packages/reporter/src/errors/errors.scss @@ -61,10 +61,15 @@ $code-border-radius: 4px; border-left: 1px dotted $err-header-text; border-image-slice: 0 0 0 1; border-image-source: repeating-linear-gradient(0deg, transparent, $err-header-text, $err-header-text 4px); - width: 13px; - min-width: 13px; - } - } + width: 12px; + min-width: 12px; + + &:first-of-type { + width: 13px; + min-width: 13px; + } + } + } .runnable-err-header > .runnable-err-name { padding: 5px 4px 5px 15px; From 3ae19128690eb04ef2bea004e1331bf952ab29fb Mon Sep 17 00:00:00 2001 From: Emily Rohrbough Date: Tue, 15 Nov 2022 16:15:03 -0600 Subject: [PATCH 5/6] fix types --- packages/driver/src/cy/commands/sessions/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/driver/src/cy/commands/sessions/index.ts b/packages/driver/src/cy/commands/sessions/index.ts index 1e424efbcbee..8ae78c602e4a 100644 --- a/packages/driver/src/cy/commands/sessions/index.ts +++ b/packages/driver/src/cy/commands/sessions/index.ts @@ -504,7 +504,7 @@ export default function (Commands, Cypress, cy) { } return restoreSessionWorkflow(session) - }).then((status: 'passed' | 'warned' | 'failed') => { + }).then((status: 'created' | 'restored' | 'recreated' | 'failed') => { return navigateAboutBlank() .then(() => { setSessionLogStatus(status) From 00944d611019d61abfb10d68dcdfce7a8ca3ce13 Mon Sep 17 00:00:00 2001 From: Emily Rohrbough Date: Wed, 16 Nov 2022 08:58:37 -0600 Subject: [PATCH 6/6] must have missed this change --- packages/driver/src/cy/commands/sessions/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/driver/src/cy/commands/sessions/index.ts b/packages/driver/src/cy/commands/sessions/index.ts index 8ae78c602e4a..866110835f20 100644 --- a/packages/driver/src/cy/commands/sessions/index.ts +++ b/packages/driver/src/cy/commands/sessions/index.ts @@ -232,7 +232,7 @@ export default function (Commands, Cypress, cy) { return sessions.setSessionData(testSession) } - function validateSession (existingSession, step: SESSION_STEPS) { + function validateSession (existingSession, step: keyof typeof SESSION_STEPS) { const isValidSession = true if (!existingSession.validate) {