Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installed NPM "suspense" package, v0.0.24 #8909

Merged
merged 11 commits into from
Mar 13, 2023

Conversation

bvaughn
Copy link
Contributor

@bvaughn bvaughn commented Mar 9, 2023

First piece of PR #8884. That PR is very large so I will be landing it in a few smaller pieces. This first piece will set some foundation:

  • Install "suspense" package v0.0.24
  • Replace and delete redundant internal structures
    • Re-name misspelled "thennable"s to "thenable"
    • Replace isThennable with isPromiseLike from "suspense"
    • Replace internal Wakeable/createWakeable with Deferred/createDeferred from "suspense"
    • Replace internal Record with Record from "suspense"
    • Replaced internal record "status" constants with ones from from "suspense"
  • Update fixture data if needed (blocked until my flight lands)

@vercel
Copy link

vercel bot commented Mar 9, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated
devtools ✅ Ready (Inspect) Visit Preview 💬 Add your feedback Mar 13, 2023 at 3:06PM (UTC)

@qa-wolf
Copy link

qa-wolf bot commented Mar 9, 2023

@replay-io
Copy link

replay-io bot commented Mar 9, 2023

E2E Tests

57 replays were recorded for 09e2483.

image 0 Failed
image 57 Passed
  • breakpoints-01: Test basic breakpoint functionality
  • breakpoints-02: Test unhandled divergence while evaluating at a breakpoint
  • breakpoints-03: Test stepping forward through breakpoints when rewound before the first one
  • breakpoints-05: Test interaction of breakpoints with debugger statements
  • breakpoints-06: Test log point in a sourcemapped file
  • breakpoints-07: rewind and seek using command bar and console messages
  • breakpoints-08: should be temporarily disabled
  • console_async: support console evaluations in async frames
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/da5fe0df-ccdf-4a4f-866d-9bca1f961b68>console_dock_node: Should show the correct docking behavior for recordings without video</a></li>
      <li><a href=https://app.replay.io/recording/5f62900e-0baf-4737-8136-4b6b3c65e425>console_dock: Should show the correct docking behavior for recordings with video</a></li>
      <li><a href=https://app.replay.io/recording/86a178da-5b88-408e-9e23-b5a6ae154483>console_errors: Test that errors and warnings from various sources are shown in the console</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/dc36ab74-7266-4bc5-88be-db775d698471>console_eval: support console evaluations</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/c318a3a9-e19b-47e3-82f6-f96d56955fff>console_warp-01: should support warping to console messages</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/5d5c3e01-733b-4f3e-a862-03b8d335be0d>console_warp-02: support pausing, warping, stepping and evaluating console messages</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/962d9e5f-17ac-4795-acc7-bc44e4f7efa0>console-expressions-01: should cache input eager eval and terminal expressions per instance</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/2b9ecc57-412d-45f4-a636-b0d9a2c088d2>focus_mode-01: should filter messages as regions based on the active focus mode</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/ace77231-76e0-4851-a2ae-c7404fcc2dd7>highlighter: element highlighter works everywhere</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/e4424b76-1ccb-4d65-9a85-58d784762f24>inspector-01: Test that scopes are rerendered</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/2df8b4f9-4fb0-4066-9381-16cbd4b90352>inspector-02: element picker and iframe behavior</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/50d76c7a-a172-45cb-bbb0-72b962a4843d>inspector-03: Test that styles for elements can be viewed</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/fb697233-d7ca-4846-ade0-df15736bde6d>inspector-04: Test that styles for elements can be viewed</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/b57dbf28-31df-43dc-a8fe-2c402b36a61e>inspector-05: Test that styles for elements can be viewed</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/eeba7264-2d9f-4b93-994e-8e87353bc6bf>inspector-06: Test that styles for elements can be viewed</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/3d231a1e-faf9-453e-8cb0-4f570bb52f35>inspector-07: Test that styles for elements can be viewed</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/9b0b10be-04fe-45c2-8edc-26d7b87b7874>logpoints-01: log-points appear in the correct order and allow time warping</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/77732cd1-70b3-4e16-9cfa-f8abb5284679>logpoints-02: conditional log-points</a></li>
      <li><a href=https://app.replay.io/recording/0b52d398-145f-4143-a3d6-b707244b755c>logpoints-03: should display event properties in the console</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/56e5912c-5c69-459f-9920-2515658d4d9d>logpoints-04: should display exceptions in the console</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d9f91c0e-21d6-46e7-9a59-c4b8222d2874>logpoints-05: should auto-complete based on log point location</a></summary>
        <ol type="1">
          
          ```
          expect(received).toContain(expected) // indexOf
          
          Expected value: "arrayGlobal"
          Received array: []
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/5623d2a5-ea02-4258-9df1-84d3c5eeb57a>logpoints-06: should be temporarily disabled</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/84c03f4c-71c9-48fc-9303-de2af244ce5d>logpoints-07: should use the correct scope in auto-complete</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/70e926cd-6de5-45db-a075-97b43b8ce315>logpoints-08: should support jumping directly to a hit point via the capsule input</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/2e9d4b93-c1ae-4699-b9e7-66179dd3e035>node_console-01: Basic node console behavior</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/693454cc-5914-410b-a189-9edd7846ae03>node_console-02: uncaught exceptions should show up</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/bab3b76e-1a16-4d89-817d-86e41cd35581>node_logpoint-01: Basic node logpoints</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/fedab9af-dcc6-461d-9754-2e06fb4dfd1f>node_logpoint-02: Node exception logpoints</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/1c02901b-cbbc-402d-ba40-ce79be99e658>node_object_preview: Showing console objects in node</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/3d4781bd-8804-49b9-b211-743767ebbb18>node_spawn: Basic subprocess spawning</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/eb3df6cb-1a45-48fd-ab2f-5c5061df3a64>node_stepping-01: Test stepping in async frames and async call stacks</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d146b37e-2a28-4aa4-a66a-94d48e250f2a>node_worker-01: make sure node workers don't cause crashes</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/bd7182ea-7c1a-4989-a2b5-3365ab41662c>object_preview-01: expressions in the console after time warping</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/9afd2ebf-212a-4d0a-9e0a-943851c4f338>object_preview-02: should allow objects in scope to be inspected</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d1885c32-0f7b-4b58-b0e0-196c63f35d15>object_preview-03: Test previews when switching between frames and stepping</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/77633033-7e87-43e5-ad3b-e1c0ba8db3b5>object_preview-04: Test scope mapping and switching between generated/original sources</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/2dff38c4-0d43-481e-909b-a0646b35c6ec>object_preview-05: Should support logging objects as values</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/01eddc55-bc9e-437f-b788-bcf441d213d0>react_devtools: Test React DevTools.</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d30bb447-01e3-4fe1-92f1-9cadfcedb5f5>repaint: repaints the screen screen when stepping over code that modifies the DOM</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/ad8aaf07-37d6-4e56-b99e-99b88babf146>resizable-panels-01: Left side Toolbar should be collapsible</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/20f17e41-edf4-427d-8a54-906223d3d038>scopes_rerender: Test that scopes are rerendered</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/b555a5d5-fb68-4cd0-b45f-47d836f0dfb3>sourcemap_stacktrace: Test that stacktraces are sourcemapped</a></summary>
        <ol type="1">
          
          ```
          expect(received).toEqual(expected) // deep equality
          
          - Expected  - 9
          + Received  + 1
          
          - Array [
          -   "App.js:9",
          -   "App.js:33",
          -   "regeneratorRuntime.js:44",
          -   "regeneratorRuntime.js:125",
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/5a0d464b-3d05-4840-b7e7-ed12519f8dc5>stacking: Element highlighter selects the correct element when they overlap</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/92158034-6c6c-43f4-a7fd-295213876dad>stepping-01: Test basic step-over/back functionality</a></li>
      <details>
        <summary><a href=https://app.replay.io/recording/e26f39b9-4995-4199-8019-0e06170c63bf>stepping-02: Test fixes for some simple stepping bugs</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/466ec244-49a1-46a9-9d94-4b65567def05>stepping-03: Stepping past the beginning or end of a frame should act like a step-out</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/cc6b7949-f03f-45aa-84f1-3d8709e871cf>stepping-04: Test stepping in a frame other than the top frame</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/89d09391-c61d-491d-b0b2-f1af914b3077>stepping-05: Test stepping in pretty-printed code</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/f39a0f3f-fd2d-4419-b840-ff7ac43f1d3c>stepping-06: Test stepping in async frames and async call stacks</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: "true"
          Received: "false"
          ```
        </ol>
      </details>
      

View test run on Replay ↗︎

Snapshot Tests

2 replays were recorded for 09e2483.

image 2 Failed
    should account for column breakpoints
          ```
          expect(received).toBeFocused()
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/bbadf851-64be-4739-af3b-f02d020f178f>should render search results properly for lines with multiple breakable column positions</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBeFocused()
          ```
        </ol>
      </details>
      
image 0 Passed

View test run on Replay ↗︎

@bvaughn
Copy link
Contributor Author

bvaughn commented Mar 10, 2023

There are some e2e failures on this branch, but the ones I've spot checked also fail on main so I think they're related to a recent runtime regression that's being reverted currently. Given that the Playwright screenshot tests (the ones that use fixture data, rather than a live backend) pass, I think this change is probably safe.

@bvaughn
Copy link
Contributor Author

bvaughn commented Mar 13, 2023

All CI tests on this branch should pass once:

  1. @ryanjduffy/@jaril have disabled the Cypress test (which is expected to fail?) The always-failing Cypress test has been disabled (Delete failing Cypress e2e test #8928)
  2. The flaky Elements computed style tab fix lands (Fix e2e test flakiness #8927)

@bvaughn
Copy link
Contributor Author

bvaughn commented Mar 13, 2023

The Playwright test that failed ("should render search results properly for lines with multiple breakable column positions") is unfortunately sometimes flaky. It passed locally for me, so I'm going to move forward.

@bvaughn bvaughn merged commit 9353f8e into main Mar 13, 2023
@bvaughn bvaughn deleted the bvaughn/suspense-replace-internals branch March 13, 2023 15:18
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.

2 participants