Skip to content

Conversation

0xbad0c0d3
Copy link
Contributor

@0xbad0c0d3 0xbad0c0d3 commented Sep 25, 2025

I was running tests locally and noticed that they are stays running if something wents wrong that's why I've added: 04d2fbf

fixes #17514

Is there a way to run e2e tests pipeline without merging to develop?


Note

Introduce copyExecutionContext with tests; make Cloudflare integration test runner accept AbortSignal and update tests; ignore JUnit reports.

  • Cloudflare SDK:
    • Utility: Add packages/cloudflare/src/utils/copyExecutionContext.ts to clone ExecutionContext/DurableObjectState with overridable, bound methods.
    • Tests: Add packages/cloudflare/test/copy-execution-context.test.ts covering method overriding, immutability safety, and symbol property preservation.
  • Integration Tests (Cloudflare):
    • Runner: dev-packages/cloudflare-integration-tests/runner.ts start now accepts optional AbortSignal and forwards it to spawn.
    • Suites: Update tests (basic, tracing/anthropic-ai, tracing/durableobject, tracing/openai) to pass { signal } from Vitest and call .start(signal).
  • Repo:
    • .gitignore: Ignore packages/**/*.junit.xml JUnit reports.

Written by Cursor Bugbot for commit cb97187. This will update automatically on new commits. Configure here.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@mydea
Copy link
Member

mydea commented Sep 26, 2025

You should be able to run E2E tests locally:

cd dev-packages/e2e-tests
yarn test:run test-app-name

This requires docker & pnpm to be setup!

@andreiborza
Copy link
Member

@0xbad0c0d3 is this ready for review?

@0xbad0c0d3
Copy link
Contributor Author

No, not yet, sorry for the delay.

@andreiborza
Copy link
Member

No worries, just wasn't sure :) When you're ready, please request me as a reviewer.

@0xbad0c0d3
Copy link
Contributor Author

You should be able to run E2E tests locally:

cd dev-packages/e2e-tests
yarn test:run test-app-name

This requires docker & pnpm to be setup!

and also volta

cod1k added 6 commits September 30, 2025 15:55
Updated test definitions across multiple suites to accept and pass abort signals (`signal`) for enhanced request handling. Adjusted the `start` method in the test runner to support optional abort signals.
Reworked `copyExecutionContext` to use a dynamic property descriptor approach, enabling method overrides without altering the original object. Expanded test cases to cover additional methods and verify override behavior.
Enhanced the descriptor logic to better handle non-function properties and prevent invalid method overrides. Fixed potential issues with binding non-function properties to the context.
Updated the `OverridesStore` type to strictly associate keys with context-specific methods, improving type safety. Renamed and enhanced the descriptor creation function to better handle method overriding and added checks for function-only properties.
Added `packages/**/*.junit.xml` to `.gitignore` to prevent JUnit report files from being tracked in the repository, keeping the working directory clean and avoiding unnecessary versioning of test artifacts.
@0xbad0c0d3
Copy link
Contributor Author

@andreiborza so, it is ready

@andreiborza
Copy link
Member

Thanks! Will take a look in a bit.

@andreiborza andreiborza self-requested a review September 30, 2025 13:03
@andreiborza andreiborza requested a review from JPeer264 October 9, 2025 22:22
configurable: true,
enumerable: true,
set: newValue => {
if (typeof newValue !== 'function') throw new Error('Cannot override non-function');
Copy link
Member

Choose a reason for hiding this comment

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

h: I don't think that throwing an error is the right choice here since it could fail the entire call.
I'd be nice if there is a way to pass

* @param {ContextType|void} ctx - The execution context to be copied. Can be of type `ContextType` or `void`.
* @return {ContextType|void} A new execution context with the same properties and overridden methods if applicable.
*/
export function copyExecutionContext<T extends ContextType>(ctx: T): T {
Copy link
Member

Choose a reason for hiding this comment

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

m: This function is not yet called. I would assume this is intended to be used in here?

const context = wrapperOptions.context as ExecutionContext | undefined;

@JPeer264
Copy link
Member

Thanks a lot for creating a PR. I added two notes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

@sentry/cloudflare crashes DurableObjects due to unsafe & unnecessary proxying of waitUntil()
4 participants