Open3

storybookのplayのcanvasElementがreactのcreatePortalのelementが見れない問題

堀川登喜矢堀川登喜矢

storybookのplayのcanvasElementがreactのcreatePortalのelementが見れない問題。現状では仕方なくdocument.querySelector('body')などで対応しているが、一応bug issueは立っている。

この様に、antdのモーダルを使った実装のstoryを書いている時にcanvasElementで取れるエレメントの中にモーダルが存在していない問題がある。

https://twitter.com/HorikawaTokiya/status/1527230893919997952?s=20&t=lIBN7uMTvQIbRM8fbaeRBg

Takeshi InoueTakeshi Inoue

ありがとうございます。2日ぐらいこの不具合で悩んでたので本当に助かりました!
やれやれ...

堀川登喜矢堀川登喜矢

現状では下記のように対応しているが

export const Default: Story = {}
Default.play = async () => {
  const canvas = document.querySelector('body') as HTMLElement
}

本件のbug issueで解決されれば、通常通り下記のように使えるようになるはず

import { within } from '@storybook/testing-library'

export const Default: Story = {}
Default.play = async ({ canvasElement }) => {
  const canvas = within(canvasElement)
}