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

[Bug]: Should not be able to write in inert form #27138

Open
codingedgar opened this issue May 14, 2024 · 4 comments
Open

[Bug]: Should not be able to write in inert form #27138

codingedgar opened this issue May 14, 2024 · 4 comments

Comments

@codingedgar
Copy link

codingedgar commented May 14, 2024

Describe the bug

image

when a form is inert tests consider you can write and that it is enabled, they pass when they actually failed.

To Reproduce

https://stackblitz.com/edit/github-h8mbsw?file=src%2Fstories%2FCase.stories.tsx

System

Storybook Environment Info:

  System:
    OS: macOS 14.4.1
    CPU: (8) x64 Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 18.17.0 - ~/.nvm/versions/node/v18.17.0/bin/node
    Yarn: 1.22.19 - ~/.nvm/versions/node/v18.17.0/bin/yarn <----- active
    npm: 9.6.7 - ~/.nvm/versions/node/v18.17.0/bin/npm
  Browsers:
    Chrome: 124.0.6367.201
    Edge: 124.0.2478.97
    Firefox: 125.0.3
    Safari: 17.4.1
  npmPackages:
    @storybook/addon-actions: 8.0.9 => 8.0.9 
    @storybook/addon-essentials: 8.0.9 => 8.0.9 
    @storybook/addon-interactions: 8.0.9 => 8.0.9 
    @storybook/addon-links: 8.0.9 => 8.0.9 
    @storybook/react: 8.0.9 => 8.0.9 
    @storybook/react-vite: 8.0.9 => 8.0.9 
    @storybook/test: ^8.0.9 => 8.0.9 
    chromatic: ^11.3.0 => 11.3.0 
    eslint-plugin-storybook: 0.8.0 => 0.8.0 
    msw-storybook-addon: 2.0.0 => 2.0.0 
    storybook: 8.0.9 => 8.0.9 
    storybook-addon-pseudo-states: 3.1.0 => 3.1.0 
    storybook-dark-mode: 4.0.1 => 4.0.1

Additional context

No response

@codingedgar
Copy link
Author

Leaving this here in case the sandbox gets deleted

import type { Meta, StoryObj } from '@storybook/react';
import { within, userEvent, expect } from '@storybook/test';
import { ComponentProps } from 'react';

function Case(props: ComponentProps<'form'>) {
  return (
    <form {...props}>
      <input placeholder="not focusable" />
    </form>
  );
}

const meta = {
  title: 'Case',
  component: Case,
  parameters: {
    // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
    layout: 'fullscreen',
  },
} satisfies Meta<typeof Case>;

export default meta;
type Story = StoryObj<typeof meta>;

export const Enabled: Story = {
  play: async ({ canvasElement }) => {
    const canvas = within(canvasElement);
    const input = canvas.getByPlaceholderText('not focusable');
    await expect(input).toBeEnabled();
    await userEvent.type(input, 'can write');
    await expect(canvas.queryByDisplayValue('can write')).toBeInTheDocument();
  },
};

export const Disabled: Story = {
  args: {
    inert: '',
  },
  play: async ({ canvasElement }) => {
    const canvas = within(canvasElement);
    const input = canvas.getByPlaceholderText('not focusable');
    await expect(input).toBeEnabled();
    await userEvent.type(input, 'can write');
  },
};

export const RedundantTest: Story = {
  args: {
    inert: '',
  },
  play: async ({ canvasElement }) => {
    const canvas = within(canvasElement);
    const input = canvas.getByPlaceholderText('not focusable');
    await expect(input).toBeEnabled();
    await userEvent.type(input, 'can write');
    await expect(
      canvas.queryByDisplayValue('can write')
    ).not.toBeInTheDocument();
  },
};

export const Expected: Story = {
  args: {
    inert: '',
  },
  play: async ({ canvasElement }) => {
    const canvas = within(canvasElement);
    const input = canvas.getByPlaceholderText('not focusable');
    // to pass
    await expect(input).toBeDisabled();
    // to fail
    await userEvent.type(input, 'can write');
  },
};

@codingedgar
Copy link
Author

Seems like the issue comes from here capricorn86/happy-dom#1422

@codingedgar
Copy link
Author

jsdom has the same issue: jsdom/jsdom#3605

@shilman
Copy link
Member

shilman commented May 19, 2024

Good catch @codingedgar . Looks like you've already filed it here testing-library/user-event#1215

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

No branches or pull requests

2 participants