kobaltedev / kobalte

A UI toolkit for building accessible web apps and design systems with SolidJS.
https://kobalte.dev
MIT License
1.2k stars 61 forks source link

Popover opens in the browser but not in testing #254

Open nsaritzky opened 12 months ago

nsaritzky commented 12 months ago

Describe the bug The Popover element renders correctly and opens in the browser, but it fails to open when using vitest and testing-library.

To Reproduce See this repo for a reproduction. I made it by taking the following steps:

  1. Create a new solid-js project
  2. Install Kobalte, vitest, @solid-js/testing-library, @testing-library/jest-dom, @testing-library/user-event, add vitest.config.ts.
  3. Add a simple Popover to App.tsx:
    
    import logo from "./logo.svg";
    import styles from "./App.module.css";

const App: Component = () => { return (

open
hello

); };

export default App;

4. Add a `App.test.tsx` file with the following:
```TSX
import { render, screen } from "@solidjs/testing-library";
import userEvent from "@testing-library/user-event";
import { test, expect, beforeEach } from "vitest";
import "@testing-library/jest-dom";

import App from "./App";

test("Clicking 'open' sets aria-expanded to true", async () => {
  const user = userEvent.setup();
  render(() => <App />);
  const open = screen.getByRole("button", { name: "open" });
  await user.click(open);
  expect(open).toHaveAttribute("aria-expanded", "true");
});

test("Clicking 'open' opens a dialog", async () => {
  const user = userEvent.setup();
  render(() => <App />);
  const open = screen.getByRole("button", { name: "open" });
  await user.click(open);
  expect(screen.getByRole("dialog"));
});

Expected behavior The popover opens in the browser and the tests pass. Instead, the tests fail on their expect lines.

Desktop (please complete the following information):

gBasil commented 4 months ago

I'm running into the same issue. Calling the debug() function prints out the HTML as expected with the popover open, but queries don't return the popover contents.