Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
3bb1471
fix: (studio) remove `itGrep` lines from stack trace when determining…
astone123 Oct 10, 2025
b6bc0f5
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Oct 28, 2025
926e1fc
handle .only and suites
astone123 Nov 3, 2025
49165cf
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 3, 2025
61311ee
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 3, 2025
0a8de00
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 6, 2025
a1480d8
for test block hooks, trim the stack to find the invocation details
astone123 Nov 6, 2025
36064a6
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 6, 2025
65d656c
fix stop only
astone123 Nov 6, 2025
c0fb620
fix cypress object access
astone123 Nov 7, 2025
96a9a10
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 7, 2025
d0dfb88
update comment to use generic host
astone123 Nov 11, 2025
5d5cc2d
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 11, 2025
79c51da
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 11, 2025
a7e5bb2
Update packages/driver/src/cypress/stack_utils.ts
astone123 Nov 12, 2025
7bb0f76
Update packages/driver/src/cypress/stack_utils.ts
astone123 Nov 12, 2025
42d6495
Update packages/driver/src/cypress/mocha.ts
astone123 Nov 12, 2025
1929cba
Update packages/driver/src/cypress/stack_utils.ts
astone123 Nov 12, 2025
ec9dad3
Update packages/driver/src/cypress/stack_utils.ts
astone123 Nov 12, 2025
85756f0
feedback
astone123 Nov 12, 2025
1bc1d68
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 12, 2025
4a53ed1
changelog entry
astone123 Nov 12, 2025
cde2e2c
remove unnecessary test, add driver integration tests
astone123 Nov 13, 2025
badf190
fix .only
astone123 Nov 13, 2025
d7f64f0
update test name
astone123 Nov 13, 2025
76e2319
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 13, 2025
31af0fb
fix types
astone123 Nov 13, 2025
dbe8c6f
add integration test
astone123 Nov 14, 2025
e9d72cf
logic and test updates
astone123 Nov 14, 2025
4df6616
Merge branch 'develop' into astone123/fix-itgrep-trace
astone123 Nov 14, 2025
1dfe50c
fix types
astone123 Nov 14, 2025
6fa202f
fix test
astone123 Nov 14, 2025
50418a8
only modify stacks for e2e tests
astone123 Nov 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions packages/driver/src/cypress/stack_utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,12 @@ const stackWithLinesRemoved = (stack, cb) => {
return unsplitStack(messageLines, remainingStackLines)
}

const stackWithGrepLinesRemoved = (stack) => {
return stackWithLinesRemoved(stack, (lines) => {
return _.reject(lines, (line) => line.includes('itGrep'))
})
}

const stackWithLinesDroppedFromMarker = (stack, marker, includeLast = false) => {
return stackWithLinesRemoved(stack, (lines) => {
// drop lines above the marker
Expand Down Expand Up @@ -149,6 +155,12 @@ const getInvocationDetails = (specWindow, config): InvocationDetails | undefined
}
}

// if the stack includes the 'itGrep' function, remove any lines that include it
Copy link
Contributor

Choose a reason for hiding this comment

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

Likely good to reference what itGrep is and where it is coming from (same with above) https://github.com/cypress-io/cypress/blob/develop/npm/grep/src/register.ts#L77. people who aren't familiar with @cypress/grep will struggle to understand what this means.

The other concern I have is that there could be something legitimate in the stack that has itGrep in it that we want to capture but are omitting it here. Or is this only considered when trying to calculate the row/column in the spec file where the error occurred?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added a comment there. I'm pretty sure this function is specifically used to identify where the test was executed from, so this shouldn't affect anything else. If it does, it'll be limited to use of the grep plugin

// so that the first line in the stack is the spec invocation
if (stack.includes('itGrep')) {
stack = stackWithGrepLinesRemoved(stack)
}
Copy link

Choose a reason for hiding this comment

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

Bug: Prevent errors from missing Cypress object.

Accessing specWindow.Cypress.testingType without checking if specWindow.Cypress exists will throw an error when users quickly reload tests, since specWindow.Cypress can be null or undefined in those cases. The check should be inside the existing if (specWindow.Cypress) block or include its own null check.

Fix in Cursor Fix in Web


const details: Omit<InvocationDetails, 'stack'> = getSourceDetailsForFirstLine(stack, config('projectRoot')) || {};

(details as any).stack = stack
Expand Down
26 changes: 26 additions & 0 deletions packages/driver/test/unit/cypress/stack_utils.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,32 @@ describe('stack_utils', () => {
})
})
}

it('returns the correct invocation details for a grep stack trace', () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
it('returns the correct invocation details for a grep stack trace', () => {
it('returns the correct invocation details for a test with a stack that needs to be trimmed', () => {

Copy link
Contributor Author

Choose a reason for hiding this comment

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

updated

const stack = `Error\n
at itGrep (http://localhost:3000/__cypress/tests?p=cypress/support/e2e.js:444:14)\n
at eval (http://localhost:3000/__cypress/tests?p=cypress/e2e/spec.cy.js:14:1)\n
at eval (http://localhost:3000/__cypress/tests?p=cypress/e2e/spec.cy.js:18:12)\n
at eval (<anonymous>)\n
at eval (cypress:///../driver/src/cypress/script_utils.ts:38:23)`

class GrepError {
get stack () {
return stack
}
}

stack_utils.getInvocationDetails(
{ Error: GrepError, Cypress: {} },
config,
)

expect(source_map_utils.getSourcePosition).toHaveBeenCalledWith('http://localhost:3000/__cypress/tests?p=cypress/e2e/spec.cy.js', expect.objectContaining({
column: 1,
line: 14,
file: 'http://localhost:3000/__cypress/tests?p=cypress/e2e/spec.cy.js',
}))
})
})

describe('normalizedUserInvocationStack', () => {
Expand Down
Loading