Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | 6x 6x 1x 1x 1x 1x 1x 1x 1x | // noinspection DuplicatedCode import type { StoryObj } from '@storybook/web-components'; import {expect, within} from '@storybook/test'; import '../custom-element/custom-element.js'; import '../custom-element/http-request.js'; import '../custom-element/location-element.js'; type TProps = { title: string; body:string}; type Story = StoryObj<TProps>; function sleep(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } function render(args: TProps) { const {title, body} = args; return ` <fieldset> <legend>${ title }</legend> ${ body } </fieldset> `; } const meta = { title: 'site' // , tags: ['autodocs'] , render }; export default meta; export const VersionsSelect:Story = { args : {title: 'Versions of custom-element', body:` <p>Select the version of custom-element StoryBook.</p> <custom-element > <template> <variable name="url" select="//window-location/value/@href"></variable> <variable name="current-version" >0{ substring-before(substring-after(substring($url, string-length(substring-before($url, '/')) - string-length(substring-before(substring-before($url, '/'), '@0')) + 2), '@0'), '/') }</variable> <location-element slice="window-location" live> <xsl:if test=" not(//selected-version = $current-version ) and not(//selected-version = '') "> <attribute name="src">{ concat( substring-before($url, $current-version), //selected-version, substring-after($url, $current-version) ) }</attribute> <attribute name="method">location.href</attribute> </if> </location-element> <http-request url="https://registry.npmjs.org/@epa-wg/custom-element-dist" method="GET" header-accept="application/json" slice="versions-ajax" ></http-request> <label>version: <xhtml:select slice="selected-version" autocomplete="off" name="version"> <for-each select="//versions/*"> <option value="{./@version}"> <variable name="item-version">{./@version}</variable> { $item-version } - { substring( //time/*[@dce-object-name = $item-version ], 1,10)} </option> </for-each> <for-each select="//versions/*"> <if test="./@version = $current-version"> <option selected value="{./@version}"> <variable name="item-version">{./@version}</variable> { $item-version } - { substring( //time/*[@dce-object-name = $item-version ], 1,10)} </option> </if> </for-each> </xhtml:select> </label> </template> </custom-element> <dce-link id="dce1"></dce-link> `} , play: async ({canvasElement}) => { const titleText = VersionsSelect.args!.title as string; const canvas = within(canvasElement) , code = async (id) => (await canvas.findByTestId(id)).textContent.trim(); window.location.hash = '#@epa-wg/custom-element-dist@0.0.24/storybook-static/index.html' await sleep(20) // expect( await code('p1') ).toEqual('default_P1' ); // expect( await code('p2') ).toEqual('always_p2' ); // expect( await code('p3') ).toEqual('def_P3' ); }, }; //#region unit tests /* istanbul ignore else -- @preserve */ if( 'test' === import.meta.env.MODE && !import.meta.url.includes('skiptest') ) { const mod = await import('./attributes.test.stories.ts?skiptest'); const { testStoryBook } = await import('./testStoryBook') const { describe } = await import('vitest') describe(meta.title, () => testStoryBook( mod, meta ) ); } //#endregion |