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

Adopt "suspense" package #8884

Closed
wants to merge 49 commits into from
Closed

Adopt "suspense" package #8884

wants to merge 49 commits into from

Conversation

bvaughn
Copy link
Contributor

@bvaughn bvaughn commented Mar 6, 2023

  • Upgrade react and react-dom dependencies for bug fix Bug: Tests hang when using async act() with "next" and "experimental" release channels facebook/react#26316
  • Install "suspense" package (see suspense.vercel.app)
  • Migrate caches
    • Object preview cache
    • Simple caches
      • Comments
      • Events (listeners, interactions, etc– there are a few caches)
      • Execution points
      • Frames
      • Frame steps
      • Log points
      • Mapped locations
      • Node
      • Pauses
      • Points
      • Protocol log
      • Recording capabilities
      • Redux protocol
      • Scopes
      • Search
      • Sources
      • Source lines
      • Styles
      • useIndexedDB hook
    • Streaming caches
      • Sources
      • Syntax parsing
    • Interval caches (previously "range" caches)
      • Analysis
      • Hit points
  • Delete old cache utilities and tests
    • createGenericCache
      • createUseGetValue
    • createGenericRangeCache
    • Anything else in the cache module(s)
  • Audit all new caches
    • Disable WeakRef usage where necessary (e.g. object preview cache)
    • Pass explicit getKey functions anytime there's a non primitive param
    • Export caches (rather than renaming and exporting individual methods)
  • Fix up any broken tests
    • Unit tests
    • Screenshot tests
    • e2e tests

@vercel
Copy link

vercel bot commented Mar 6, 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 9, 2023 at 7:12PM (UTC)

@qa-wolf
Copy link

qa-wolf bot commented Mar 6, 2023

@replay-io
Copy link

replay-io bot commented Mar 6, 2023

E2E Tests

58 replays were recorded for 315db6f.

image 40 Failed
    breakpoints-07: rewind and seek using command bar and console messages
          ```
          expect(received).toBe(expected) // Object.is equality
          
          Expected: true
          Received: false
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/cbc0a1aa-e540-4685-9f78-3cfd9916bf80>console_async: support console evaluations in async frames</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/3ea2bfed-b52d-4ddf-98ec-0bc2baf0962d>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/b330f7a3-9045-4bc1-ade9-1fdae62c4d43>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/3efb189f-e0f6-4b46-8a43-de31a4d15548>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/312844d3-d29f-417c-b0f5-6e753df6a372>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>
      <details>
        <summary><a href=https://app.replay.io/recording/a2018c68-eb21-4969-baea-0cbed412d438>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/41b2825a-d78a-4497-a84a-84f31e786b4c>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/29d14469-9e0e-4b8d-a8a0-57a8f123aa26>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/21381f1d-611c-4e29-8fa3-fa48f4acfb32>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>
      <details>
        <summary><a href=https://app.replay.io/recording/83360ba7-adee-4349-a645-d1a23f232cf9>inspector-04: 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/7e85929e-ecba-4c52-8677-ced4cdd58395>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>
      <details>
        <summary><a href=https://app.replay.io/recording/53c9a52d-7577-4118-8fd6-ede2618d936c>inspector-06: 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/a88be230-2066-4e5c-bc08-07c82d6a8e1d>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/8a96fe5c-b0cf-47cd-bc9c-59670d7bdd9d>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>
      <details>
        <summary><a href=https://app.replay.io/recording/dab2851e-bec9-4168-a306-1b86b5324723>logpoints-03: should display event properties in the console</a></summary>
        <ol type="1">
          
          ```
          expect(received).toContainText(expected)
          
          Expected string: "type: \"click\""
          Received string: ""
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/e1924da5-72fc-467b-84cc-33ffaed6250b>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/c1f70989-2c5c-4007-bd9e-6259355b5706>logpoints-05: should auto-complete based on log point location</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBeGreaterThan(expected)
          
          Expected: > 0
          Received:   0
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/b4ac7ea5-ad6a-49a3-af83-09857cc01eac>logpoints-07: should use the correct scope in auto-complete</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBeGreaterThan(expected)
          
          Expected: > 0
          Received:   0
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/aa858276-c77d-4c41-ac44-dd146f33c4e1>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/af7683cd-c1a3-4070-a0a5-e431870029dd>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/a7bb3891-c871-4240-93d6-95c895e892f5>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/208c7cd4-19f6-4e3d-8f48-504e77dab295>node_logpoint-02: Node exception 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/65928c63-36de-4ae3-9dcc-230b9655e852>node_object_preview: Showing console objects in node</a></summary>
        <ol type="1">
          
          ```
          locator.waitFor: Timeout 15000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-name="Message"]:has-text('Set(22) [{…}, {…}, 0, 1, 2,') >> nth=0" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/7a3a339d-f1a1-44b6-b1bf-a29b887c6dd7>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/4a5cff18-c1a7-4483-84b5-0c6d1d8509b4>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/c7396a76-a86f-44ed-b996-c5910b4bdcd9>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/ec501a14-84ab-457a-a113-9fa5f4642060>object_preview-01: expressions in the console after time warping</a></summary>
        <ol type="1">
          
          ```
          locator.waitFor: Timeout 15000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-name="Message"]:has-text('Set(22) [{…}, {…}, 0, 1, 2, …]') >> nth=0" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/dd849ba1-c615-49d0-b4d1-6f57deef9748>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/04f59d71-5bce-4d7c-84b7-6a1354539895>object_preview-03: Test previews when switching between frames and stepping</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBeGreaterThan(expected)
          
          Expected: > 0
          Received:   0
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/f834c1f1-0aea-4aa1-b359-dca993c08ea1>object_preview-04: Test scope mapping and switching between generated/original sources</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBeGreaterThan(expected)
          
          Expected: > 0
          Received:   0
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/c634b78a-6768-4c67-989a-409b57337f26>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/50ac9d03-7b12-45b9-b979-f74a51e088b9>repaint: repaints the screen screen when stepping over code that modifies the DOM</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBeGreaterThan(expected)
          
          Expected: > 0
          Received:   0
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/445b4eba-b01f-4cef-b3a3-0f61da4ec541>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/0e0f4223-59c6-42dc-a59e-1af8369297eb>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>
      <details>
        <summary><a href=https://app.replay.io/recording/77743b9d-01eb-424f-92a5-01023419b568>stepping-02: Test fixes for some simple stepping bugs</a></summary>
        <ol type="1">
          
          ```
          expect(received).toBeGreaterThan(expected)
          
          Expected: > 0
          Received:   0
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/3b036965-c429-4168-a852-364ee78fa514>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/6b2f216e-cd17-4bbc-b19d-58453c4af00c>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/b3822627-8b64-47e9-b1bc-6e1d0bbf450a>stepping-05: Test stepping in pretty-printed code</a></summary>
        <ol type="1">
          
          ```
          locator.click: Target closed
          =========================== logs ===========================
          waiting for selector "[title="Step In"]"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/235aae30-1723-4058-8449-077f322cf14b>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>
      
image 18 Passed
  • cypress-01: Test basic cypress reporter functionality
  • 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
          ```
          expect(received).toBeGreaterThan(expected)
          
          Expected: > 0
          Received:   0
          ```
        </ol>
      </details>
      <li><a href=https://app.replay.io/recording/4343120e-d57e-4ed4-95ff-c16ff18c378b>breakpoints-08: should be temporarily disabled</a></li>
      <li><a href=https://app.replay.io/recording/7576e54f-5db5-454b-9c9f-ef161e341b54>console_dock_node: Should show the correct docking behavior for recordings without video</a></li>
      <li><a href=https://app.replay.io/recording/7d3d9a85-7aa7-4e97-9981-30f0cc391b31>console_dock: Should show the correct docking behavior for recordings with video</a></li>
      <li><a href=https://app.replay.io/recording/20a3c941-e534-412b-b979-30c444ffdd0f>console_errors: Test that errors and warnings from various sources are shown in the console</a></li>
      <li><a href=https://app.replay.io/recording/7b4447f4-b233-4096-92dc-73f690e907cf>focus_mode-01: should filter messages as regions based on the active focus mode</a></li>
      <li><a href=https://app.replay.io/recording/176f130d-cf62-4010-b518-1b0c3fa05114>logpoints-02: conditional log-points</a></li>
      <li><a href=https://app.replay.io/recording/7917a067-32ee-451c-a3a8-a9b78ca90e61>logpoints-06: should be temporarily disabled</a></li>
      <li><a href=https://app.replay.io/recording/b88d87b8-63b9-47bb-8dbf-5ea03377ea98>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/7fb1b463-3d55-4f90-b5b4-6b0a1f6c31d8>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>
      <li><a href=https://app.replay.io/recording/4a906f82-1c77-4cf8-b5ff-a0d83bb67576>resizable-panels-01: Left side Toolbar should be collapsible</a></li>
      <li><a href=https://app.replay.io/recording/158fb78d-e4d8-4811-b258-76d74c41f7dc>sourcemap_stacktrace: Test that stacktraces are sourcemapped</a></li>
      <li><a href=https://app.replay.io/recording/2d73af53-7e29-4a06-ac85-1d3aab79bbe9>stepping-01: Test basic step-over/back functionality</a></li>
      

View test run on Replay ↗︎

Snapshot Tests

68 replays were recorded for 315db6f.

image 68 Failed
    should add this keyword to the list of suggestions
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d055ba08-d0d8-4d11-9743-f0f4c51c97f2>should add true/false keywords to the list of suggestions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/69350add-06cb-4ce3-b517-69371f57cbb5>should be able to toggle side filter menu open and closed</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/e16afd7e-4bb5-4702-a802-ca948c6672d2>should be filterable</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/8bc2f785-0a42-454e-b616-dc2b89a30cba>should be filterable on complex content</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d2cbd224-1403-477e-80f8-7a692a15988b>should be searchable</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/aea86643-d49f-4217-93dc-da02ef768c1f>should be searchable on complex content</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/217737b0-4188-4617-bcdb-13705a23c85e>should display list of messages</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/32e0cb14-118a-4127-b436-a543c6caaf7b>should display toggleable stack for errors</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/55384395-d6e8-4687-a4e8-ad64480a8e35>should display toggleable stack for exceptions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d04bfbca-e2ee-43ff-af56-51fbd7aee444>should display toggleable stack for traces</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/88915f42-33e2-4309-9669-5c267c1a9702>should display toggleable stack for warnings</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/804c8c36-18dc-4980-bdac-314cec07dcba>should escape object expressions in terminal expressions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/1fda06a8-21f6-4016-9914-1cab8ea615a9>should evaluate and render invalid terminal expressions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/4931714e-5cb9-494c-8462-f16d109bc4b0>should evaluate terminal expressions at an execution point</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/6d63afcb-915a-4f0e-b726-f7172c86d50e>should evaluate terminal expressions without an execution point</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/2c8db2e2-b421-4614-88db-c930bb34bc64>should expand and inspect arrays</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/9b38d176-046e-4c4b-a478-fc0941e3c0a0>should expand and inspect objects</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/4317db6d-df42-46bd-91fd-c8cf8de95509>should hide node_modules (and unpkg) if toggled</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/97cf9de9-7bfc-45a2-b24a-615e38fbfcf0>should log events in the console</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/81a07d6c-57c9-4311-843a-176dd323298f>should re-focus the search input when CMD+F is used again</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d2959b7c-ec2a-4b6e-812f-e98ea4366857>should re-focus the terminal input when search input is hidden</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/72d977fd-7789-4e38-a6bf-4971a1709b68>should remember filter toggle preferences between reloads</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/b576e002-83cc-429d-be94-75f4b914ead2>should show a button to clear terminal expressions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/10f6cc72-9159-48b5-b767-c219a08443c2>should show and hide search input when Enter and Escape are typed</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/22ec52dc-e566-40c3-a23f-65bca9d142f5>should show error object stacks by default</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/0c5fea68-ffd6-4566-9aad-516892a272f2>should show the context menu on top of other messages and the current time indicator</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/048d4de2-e21f-4551-b6a9-0210635bd097>should suggest type-ahead options from prototype objects as well</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/a9c67e3a-e901-40a5-94e0-29fe66bac212>should support seeking to a message execution point</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/208b30dc-3420-48e0-8436-ceb3d60a31c1>should support setting focus range via the context menu</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/34f5ba9b-3108-490b-8d32-b12bf5e24def>should support terminal expressions with line breaks</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="FilterToggle-timestamps"] input" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/01206478-4af3-4d88-a9ef-b8e9747e8c2c>should render nested, recursive values (as ellipses) without crashing</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/7239a182-74f9-4b14-918d-4f4599bcfe37>should copy arrays</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/1ad153df-05f5-4cf1-89a6-41b6f13050a1>should copy dates</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d3aa4511-e84e-4cfa-adca-c37c05a96bfe>should copy deep arrays and their nested properties</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/af5afb2d-eece-41ed-b224-0db2ea436648>should copy deep objects and their nested properties</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/8b336b05-f2f2-4068-a8af-9f13b9e07c6d>should copy errors</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/5e110fca-52c5-4fe0-9a49-4629a4993dcb>should copy functions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/cdb26544-db78-4246-a7fc-5f1cd8ec90fd>should copy html elements and text</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/301e7fd2-7aa7-4324-a1ff-8b7e5d802e2d>should copy maps</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/dc5c3d6e-3719-4c14-ba97-12b39f0eff46>should copy objects</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/cb88667c-b0e4-4cc8-89aa-204181192695>should copy primitive client values</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/f7cab135-d329-42dc-83eb-26548e783dc1>should copy regular expressions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/dd6b04dd-4926-4c98-8fe7-686f4caf4861>should copy sets</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/f7133e52-c131-4f4d-9d1a-2d504a632a4a>should properly bucket properties for an overflowing array</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/748f914f-8c4b-4d0b-b86b-5551d76cf5be>should render and inspect a Promise</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/0f756b17-fa5f-4da9-aab9-7276cbf8322e>should render and inspect a Proxy</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/27a66649-fd89-4246-b5b9-d1540e5e94de>should render and inspect arrays</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/66b23eb8-4de5-4ccd-bbbd-2d43f6d6b85f>should render and inspect functions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/f79ba286-dc38-4da1-96a7-748c3662adab>should render and inspect HTML elements</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/018781c7-8319-484f-8c04-33017724d205>should render and inspect maps</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/db22eaae-faed-471f-8264-e043ce50aaa9>should render and inspect objects</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/5f26c2a3-6eb0-4d3d-9ad2-70cf4070e4a1>should render and inspect regular expressions</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/02609b9c-380f-41b4-aa47-6512bb92f590>should render and inspect sets</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/b961555d-a6c5-43a5-b6a2-8da47b4ad873>should render dates</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/e25c4499-e561-4343-af19-553390916cb8>should render errors</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/7ea040fd-966f-4d6a-adb5-0868218777e6>should render getters and setters correctly</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/21f35867-cb07-4a07-9e81-312a4a416c9c>should render simple values</a></summary>
        <ol type="1">
          
          ```
          page.waitForSelector: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id="ConsoleMenuToggleButton"]" to be visible
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/f468d951-cf56-49e8-b982-c8d8587cd386>should render sections correctly</a></summary>
        <ol type="1">
          
          ```
          locator.evaluate: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-name=ScopesInspector]"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d370be1b-99a5-4ef9-a61f-12ffbcf08fd9>should show/hide object and array previews when toggled</a></summary>
        <ol type="1">
          
          ```
          locator.evaluate: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-name=ScopesInspector] >> [data-test-name=InspectorRoot] >> :scope:has-text("someArray")"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/330e7d24-37dc-4c1e-a6ed-674d973f1a8d>should auto-suggestion text based on the current expression</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/62d1604f-3fc1-4da9-886c-a50924614e07>should expand and contract line height when log points are added and removed</a></summary>
        <ol type="1">
          
          ```
          locator.click: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id=PointPanel-13] >> [data-test-name="PointPanel-SaveButton"]"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/a1733f22-1b69-44b6-9858-64e65a44e415>should include log points in search results</a></summary>
        <ol type="1">
          
          ```
          locator.click: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id=PointPanel-13] >> [data-test-name="PointPanel-SaveButton"]"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/352e2944-95ba-4101-bbec-9749f308bcf1>should not allow saving log points with invalid content</a></summary>
        <ol type="1">
          
          ```
          locator.focus: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id=PointPanel-13] >> [data-test-name=PointPanel-ContentInput]"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d122ae68-6f78-4db0-835d-fe7a7e8c1b86>should show different background color and edit icon when log point disabled</a></summary>
        <ol type="1">
          
          ```
          locator.click: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id=PointPanel-13] >> [data-test-name="PointPanel-SaveButton"]"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/ff6dd404-73ff-415d-b93f-ebb37c80ff42>should support custom badge styles for log points</a></summary>
        <ol type="1">
          
          ```
          locator.click: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-id=PointPanel-13] >> [data-test-name="PointPanel-SaveButton"]"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/359df05d-5920-4aa2-9302-21fdfec9a21a>should render headers for complex data correctly</a></summary>
        <ol type="1">
          
          ```
          locator.scrollIntoViewIfNeeded: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-name=SourcePreviewInspector] >> :scope:has-text("ƒ SomeFunction()")"
          ============================================================
          ```
        </ol>
      </details>
      <details>
        <summary><a href=https://app.replay.io/recording/d31dd021-6538-4625-b1bc-abf2ff0f7e5c>should render primitive data correctly</a></summary>
        <ol type="1">
          
          ```
          locator.scrollIntoViewIfNeeded: Timeout 5000ms exceeded.
          =========================== logs ===========================
          waiting for selector "[data-test-name=SourcePreviewInspector] >> :scope:has-text("bigInt")"
          ============================================================
          ```
        </ol>
      </details>
      
image 0 Passed

View test run on Replay ↗︎

@bvaughn bvaughn closed this Mar 10, 2023
bvaughn added a commit that referenced this pull request Mar 13, 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.25
* 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
@bvaughn bvaughn deleted the bvaughn/suspense branch June 30, 2023 17:07
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.

1 participant