@storybook/addon-vitest 0.0.0-pr-31819-sha-8b7e5823 → 0.0.0-pr-32047-sha-6cc3189c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-55WZLVGN.mjs +11 -0
- package/dist/chunk-JKRQGT2U.mjs +10 -0
- package/dist/index.js +6 -9
- package/dist/index.mjs +5 -0
- package/dist/manager.js +8 -5571
- package/dist/node/coverage-reporter.d.ts +184 -0
- package/dist/node/coverage-reporter.js +4 -1395
- package/dist/node/coverage-reporter.mjs +12 -0
- package/dist/node/vitest.d.ts +2 -0
- package/dist/node/vitest.js +17 -563
- package/dist/node/vitest.mjs +19 -0
- package/dist/postinstall.js +93 -1170
- package/dist/preset.js +27 -268
- package/dist/vitest-plugin/global-setup.d.ts +6 -0
- package/dist/vitest-plugin/global-setup.js +6 -146
- package/dist/vitest-plugin/global-setup.mjs +13 -0
- package/dist/vitest-plugin/index.d.ts +6 -0
- package/dist/vitest-plugin/index.js +43 -2589
- package/dist/vitest-plugin/index.mjs +28 -0
- package/dist/vitest-plugin/playwright-utils.d.ts +42649 -0
- package/dist/vitest-plugin/playwright-utils.js +34 -0
- package/dist/vitest-plugin/playwright-utils.mjs +29 -0
- package/dist/vitest-plugin/setup-file.d.ts +14 -0
- package/dist/vitest-plugin/setup-file.js +9 -28
- package/dist/vitest-plugin/setup-file.mjs +9 -0
- package/dist/vitest-plugin/test-utils.d.ts +20 -0
- package/dist/vitest-plugin/test-utils.js +8 -68
- package/dist/vitest-plugin/test-utils.mjs +8 -0
- package/manager.js +1 -1
- package/manager.mjs +1 -0
- package/package.json +95 -16
- package/postinstall.js +1 -0
- package/postinstall.mjs +1 -0
- package/preset.js +1 -1
- package/preset.mjs +1 -0
- package/dist/_browser-chunks/chunk-A47P2DCZ.js +0 -11
- package/dist/_browser-chunks/chunk-VMSW5DPM.js +0 -60
- package/dist/_node-chunks/chunk-C4NXJJA3.js +0 -324
- package/dist/_node-chunks/chunk-CIKGVIS6.js +0 -223
- package/dist/_node-chunks/chunk-JSCRRX7J.js +0 -81
- package/dist/_node-chunks/chunk-KVKHJ5OL.js +0 -46
- package/dist/_node-chunks/chunk-L5EWH7GC.js +0 -5002
- package/dist/_node-chunks/chunk-N3OFRDD3.js +0 -80
- package/dist/_node-chunks/chunk-RCVH25XB.js +0 -1598
- package/dist/_node-chunks/chunk-W26ZMSD3.js +0 -143
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var convertToFilePath=url=>url.replace(/^file:\/\//,"").replace(/^\/+([a-zA-Z]:)/,"$1").replace(/%20/g," ");async function prepareScript(page){await page.goto("http://localhost:6006/iframe.html",{waitUntil:"load"}).catch(err=>{if(err.message?.includes("ERR_CONNECTION_REFUSED")){let errorMessage=`Could not access the Storybook instance at http://localhost:6006. Are you sure it's running?
|
|
4
|
+
|
|
5
|
+
${err.message}`;throw new Error(errorMessage)}throw err}),await page.exposeBinding("logToPage",(_,message)=>console.log(message));}async function setupPageScript(page){await page.evaluate(async()=>{let TEST_RUNNER_STORYBOOK_URL="http://localhost:6006",TEST_RUNNER_VERSION="1.0.0",TEST_RUNNER_RENDERED_EVENT="storyFinished",TEST_RUNNER_VIEW_MODE="story",TEST_RUNNER_LOG_LEVEL="verbose",bold=message=>`\x1B[1m${message}\x1B[22m`,magenta=message=>`\x1B[35m${message}\x1B[39m`,blue=message=>`\x1B[34m${message}\x1B[39m`,red=message=>`\x1B[31m${message}\x1B[39m`,yellow=message=>`\x1B[33m${message}\x1B[39m`,grey=message=>`\x1B[90m${message}\x1B[39m`,LIMIT_REPLACE_NODE="[...]",CIRCULAR_REPLACE_NODE="[Circular]",arr=[],replacerStack=[];function defaultOptions(){return {depthLimit:Number.MAX_SAFE_INTEGER,edgesLimit:Number.MAX_SAFE_INTEGER}}function stringify(obj,replacer,spacer,options){typeof options>"u"&&(options=defaultOptions()),decirc(obj,"",0,[],void 0,0,options);let res;try{replacerStack.length===0?res=JSON.stringify(obj,replacer,spacer):res=JSON.stringify(obj,replaceGetterValues(replacer),spacer);}catch{return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]")}finally{for(;arr.length!==0;){let part=arr.pop();part&&part.length===4?Object.defineProperty(part[0],part[1],part[3]):part&&(part[0][part[1]]=part[2]);}}return res}function decirc(val,k,edgeIndex,stack,parent,depth,options){depth+=1;let i;if(typeof val=="object"&&val!==null){for(i=0;i<stack.length;i++)if(stack[i]===val){setReplace(CIRCULAR_REPLACE_NODE,val,k,parent);return}if(depth>options.depthLimit||edgeIndex+1>options.edgesLimit){setReplace(LIMIT_REPLACE_NODE,val,k,parent);return}if(stack.push(val),Array.isArray(val))for(i=0;i<val.length;i++)decirc(val[i],i.toString(),i,stack,val,depth,options);else {let keys=Object.keys(val);for(i=0;i<keys.length;i++){let key=keys[i];decirc(val[key],key,i,stack,val,depth,options);}}stack.pop();}}function setReplace(replace,val,k,parent){if(!parent)return;let propertyDescriptor=Object.getOwnPropertyDescriptor(parent,k);propertyDescriptor&&propertyDescriptor.get!==void 0?propertyDescriptor.configurable?(Object.defineProperty(parent,k,{value:replace}),arr.push([parent,k,val,propertyDescriptor])):replacerStack.push([val,k,replace]):(parent[k]=replace,arr.push([parent,k,val]));}function replaceGetterValues(replacer){let effectiveReplacer=replacer??((_k,v)=>v);return function(key,val){if(replacerStack.length>0)for(let i=0;i<replacerStack.length;i++){let part=replacerStack[i];if(part[1]===key&&part[0]===val){val=part[2],replacerStack.splice(i,1);break}}return effectiveReplacer.call(this,key,val)}}function composeMessage(args){return args instanceof Error?`${args.name}: ${args.message}
|
|
6
|
+
${args.stack}`:typeof args>"u"?"undefined":typeof args=="string"?args:stringify(args,null,null,{depthLimit:5,edgesLimit:100})}function truncate(input,limit){return input.length>limit?input.substring(0,limit)+"\u2026":input}function addToUserAgent(extra){let originalUserAgent=globalThis.navigator.userAgent;originalUserAgent.includes(extra)||Object.defineProperty(globalThis.navigator,"userAgent",{get:function(){return [originalUserAgent,extra].join(" ")},configurable:!0});}function getStory(){let currentRender=globalThis.__STORYBOOK_PREVIEW__.currentRender;return currentRender&&"story"in currentRender?currentRender.story:{}}class StorybookTestRunnerError extends Error{constructor(params){let{storyId,errorMessage,logs=[],isMessageFormatted=!1}=params,message=isMessageFormatted?errorMessage:StorybookTestRunnerError.buildErrorMessage({storyId,errorMessage,logs});super(message),this.name="StorybookTestRunnerError";}static buildErrorMessage(params){let{storyId,errorMessage,logs=[],panel,errorMessagePrefix=""}=params,storyUrl=`${TEST_RUNNER_STORYBOOK_URL}?path=/story/${storyId}`,finalStoryUrl=panel?`${storyUrl}&addonPanel=${panel}`:storyUrl,separator=`
|
|
7
|
+
|
|
8
|
+
--------------------------------------------------`,finalLogs=logs.filter(err=>!err.includes(errorMessage)),extraLogs=finalLogs.length>0?separator+`
|
|
9
|
+
|
|
10
|
+
Browser logs:
|
|
11
|
+
|
|
12
|
+
`+finalLogs.join(`
|
|
13
|
+
|
|
14
|
+
`):"",linkPrefix=blue(`
|
|
15
|
+
Click to debug the error directly in Storybook:
|
|
16
|
+
${finalStoryUrl}
|
|
17
|
+
|
|
18
|
+
`);return `${errorMessagePrefix}${linkPrefix}Message:
|
|
19
|
+
${truncate(errorMessage,1e3)}
|
|
20
|
+
${extraLogs}`}}async function __waitForStorybook(){return new Promise((resolve,reject)=>{let timeout=setTimeout(()=>{reject();},1e4);if(document.querySelector("#root")||document.querySelector("#storybook-root"))return clearTimeout(timeout),resolve();let observer=new MutationObserver(()=>{(document.querySelector("#root")||document.querySelector("#storybook-root"))&&(clearTimeout(timeout),resolve(),observer.disconnect());});observer.observe(document.body,{childList:!0,subtree:!0});})}function isServerComponentError(error){return typeof error=="string"&&(error.includes("Only Server Components can be async at the moment.")||error.includes("A component was suspended by an uncached promise.")||error.includes("async/await is not yet supported in Client Components"))}function expectToHaveNoViolations(results){let violations=filterViolations(results.violations,results.toolOptions?.impactLevels??[]);function reporter(violations2){if(violations2.length===0)return null;let lineBreak=`
|
|
21
|
+
|
|
22
|
+
`;return violations2.map(violation=>violation.nodes.map(node=>{let selector=node.target.join(", ");return red(`Expected the HTML found at $('${selector}') to have no violations:`)+lineBreak+grey(node.html)+lineBreak+red("Received:")+lineBreak+red(`"${violation.help} (${violation.id})"`)+lineBreak+yellow(node.failureSummary)+lineBreak+(violation.helpUrl?red("You can find more information on this issue here:")+`
|
|
23
|
+
${blue(violation.helpUrl)}`:"")}).join(lineBreak)).join(lineBreak+"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"+lineBreak)}return {long:reporter(violations),short:`Found ${violations.length} a11y violations, run the test with 'a11y: { test: 'error' }' parameter to see the full report or debug it directly in Storybook.`}}function filterViolations(violations,impactLevels){return impactLevels&&impactLevels.length>0?violations.filter(v=>impactLevels.includes(v.impact)):violations}async function __getContext(storyId){return globalThis.__STORYBOOK_PREVIEW__.storyStore.loadStory({storyId})}async function __test(storyId){try{await __waitForStorybook();}catch{let message=`Timed out waiting for Storybook to load after 10 seconds. Are you sure the Storybook is running correctly in that URL? Is the Storybook private (e.g. under authentication layers)?
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
HTML: ${document.body.innerHTML}`;throw new StorybookTestRunnerError({storyId,errorMessage:message})}let channel=globalThis.__STORYBOOK_ADDONS_CHANNEL__;if(!channel)throw new StorybookTestRunnerError({storyId,errorMessage:"The test runner could not access the Storybook channel. Are you sure the Storybook is running correctly in that URL?"});addToUserAgent(`(StorybookTestRunner@${TEST_RUNNER_VERSION})`);let logs=[],hasErrors=!1,logLevelMapping={log:["info","verbose"],warn:["info","warn","verbose"],error:["info","warn","error","verbose"],info:["verbose"],trace:["verbose"],debug:["verbose"],group:["verbose"],groupCollapsed:["verbose"],table:["verbose"],dir:["verbose"]},spyOnConsole=(method,name)=>{let originalFn=console[method].bind(console);console[method]=function(...args){if(method==="error"&&isServerComponentError(args[0]))return;let shouldCollectError=method==="error";shouldCollectError&&(hasErrors=!0);let message=args.map(composeMessage).join(", ");if(method==="trace"){let stackTrace=new Error().stack;message+=`
|
|
27
|
+
${stackTrace}
|
|
28
|
+
`;}if(logLevelMapping[method].includes(TEST_RUNNER_LOG_LEVEL)||shouldCollectError){let prefix=`${bold(name)}: `;logs.push(prefix+message);}originalFn(...args);};};Object.entries({log:blue,info:blue,warn:yellow,error:red,dir:magenta,trace:magenta,group:magenta,groupCollapsed:magenta,table:magenta,debug:magenta}).forEach(([method,color])=>{spyOnConsole(method,color(method));});let cleanup=_listeners=>{Object.entries(_listeners).forEach(([eventName,listener])=>{channel.off(eventName,listener);});};return new Promise((resolve,reject)=>{let rejectWithFormattedError=(storyId2,message,panel)=>{let errorMessage=StorybookTestRunnerError.buildErrorMessage({storyId:storyId2,errorMessage:message,logs,panel});reject(new StorybookTestRunnerError({storyId:storyId2,errorMessage,logs,isMessageFormatted:!0}));},INTERACTIONS_PANEL="storybook/interactions/panel",A11Y_PANEL="storybook/a11y/panel",listeners={[TEST_RUNNER_RENDERED_EVENT]:data=>{if(cleanup(listeners),hasErrors){rejectWithFormattedError(storyId,"Browser console errors");return}else if(data?.reporters){let story=getStory(),a11yGlobals=story.globals?.a11y,a11yParameter=story.parameters?.a11y,a11yTestParameter=a11yParameter?.test,a11yReport=data.reporters.find(reporter=>reporter.type==="a11y");if(a11yParameter?.disable!==!0&&a11yParameter?.test!=="off"&&a11yGlobals?.manual!==!0&&a11yReport?.result?.violations?.length>0){let violations=expectToHaveNoViolations(a11yReport.result);if(violations&&a11yTestParameter==="error"){rejectWithFormattedError(storyId,violations.long,A11Y_PANEL);return}else if(violations&&a11yTestParameter==="todo"){let warningMessage=StorybookTestRunnerError.buildErrorMessage({storyId,errorMessagePrefix:`--------------------------
|
|
29
|
+
${story.title} > ${story.name}`,errorMessage:yellow(violations.short),logs,panel:A11Y_PANEL});logToPage(warningMessage);}}}resolve(document.getElementById("root"));},storyUnchanged:()=>{cleanup(listeners),resolve(document.getElementById("root"));},storyErrored:({description})=>{cleanup(listeners),rejectWithFormattedError(storyId,description,INTERACTIONS_PANEL);},storyThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},playFunctionThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},unhandledErrorsWhilePlaying:([error])=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},storyMissing:id=>{cleanup(listeners),id===storyId&&rejectWithFormattedError(storyId,"The story was missing when trying to access it.");}};Object.entries(listeners).forEach(([eventName,listener])=>{channel.on(eventName,listener);}),channel.emit("setCurrentStory",{storyId,viewMode:TEST_RUNNER_VIEW_MODE});})}globalThis.__test=__test,globalThis.__getContext=__getContext;});}async function testStory(storyId,page,context,playwrightFn){let _task=context.task;if(_task.meta.storyId=storyId,await page.evaluate(async storyId2=>await globalThis.__test(storyId2),storyId),playwrightFn){let storyContext=await page.evaluate(storyId2=>globalThis.__getContext(storyId2),storyId);await playwrightFn({page,context:storyContext});}let coverage=await page.evaluate(()=>globalThis.__coverage__);coverage&&await globalThis.__vitest_worker__.rpc.onAfterSuiteRun({coverage,testFiles:[],transformMode:"web"});}
|
|
30
|
+
|
|
31
|
+
exports.convertToFilePath = convertToFilePath;
|
|
32
|
+
exports.prepareScript = prepareScript;
|
|
33
|
+
exports.setupPageScript = setupPageScript;
|
|
34
|
+
exports.testStory = testStory;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var convertToFilePath=url=>url.replace(/^file:\/\//,"").replace(/^\/+([a-zA-Z]:)/,"$1").replace(/%20/g," ");async function prepareScript(page){await page.goto("http://localhost:6006/iframe.html",{waitUntil:"load"}).catch(err=>{if(err.message?.includes("ERR_CONNECTION_REFUSED")){let errorMessage=`Could not access the Storybook instance at http://localhost:6006. Are you sure it's running?
|
|
2
|
+
|
|
3
|
+
${err.message}`;throw new Error(errorMessage)}throw err}),await page.exposeBinding("logToPage",(_,message)=>console.log(message));}async function setupPageScript(page){await page.evaluate(async()=>{let TEST_RUNNER_STORYBOOK_URL="http://localhost:6006",TEST_RUNNER_VERSION="1.0.0",TEST_RUNNER_RENDERED_EVENT="storyFinished",TEST_RUNNER_VIEW_MODE="story",TEST_RUNNER_LOG_LEVEL="verbose",bold=message=>`\x1B[1m${message}\x1B[22m`,magenta=message=>`\x1B[35m${message}\x1B[39m`,blue=message=>`\x1B[34m${message}\x1B[39m`,red=message=>`\x1B[31m${message}\x1B[39m`,yellow=message=>`\x1B[33m${message}\x1B[39m`,grey=message=>`\x1B[90m${message}\x1B[39m`,LIMIT_REPLACE_NODE="[...]",CIRCULAR_REPLACE_NODE="[Circular]",arr=[],replacerStack=[];function defaultOptions(){return {depthLimit:Number.MAX_SAFE_INTEGER,edgesLimit:Number.MAX_SAFE_INTEGER}}function stringify(obj,replacer,spacer,options){typeof options>"u"&&(options=defaultOptions()),decirc(obj,"",0,[],void 0,0,options);let res;try{replacerStack.length===0?res=JSON.stringify(obj,replacer,spacer):res=JSON.stringify(obj,replaceGetterValues(replacer),spacer);}catch{return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]")}finally{for(;arr.length!==0;){let part=arr.pop();part&&part.length===4?Object.defineProperty(part[0],part[1],part[3]):part&&(part[0][part[1]]=part[2]);}}return res}function decirc(val,k,edgeIndex,stack,parent,depth,options){depth+=1;let i;if(typeof val=="object"&&val!==null){for(i=0;i<stack.length;i++)if(stack[i]===val){setReplace(CIRCULAR_REPLACE_NODE,val,k,parent);return}if(depth>options.depthLimit||edgeIndex+1>options.edgesLimit){setReplace(LIMIT_REPLACE_NODE,val,k,parent);return}if(stack.push(val),Array.isArray(val))for(i=0;i<val.length;i++)decirc(val[i],i.toString(),i,stack,val,depth,options);else {let keys=Object.keys(val);for(i=0;i<keys.length;i++){let key=keys[i];decirc(val[key],key,i,stack,val,depth,options);}}stack.pop();}}function setReplace(replace,val,k,parent){if(!parent)return;let propertyDescriptor=Object.getOwnPropertyDescriptor(parent,k);propertyDescriptor&&propertyDescriptor.get!==void 0?propertyDescriptor.configurable?(Object.defineProperty(parent,k,{value:replace}),arr.push([parent,k,val,propertyDescriptor])):replacerStack.push([val,k,replace]):(parent[k]=replace,arr.push([parent,k,val]));}function replaceGetterValues(replacer){let effectiveReplacer=replacer??((_k,v)=>v);return function(key,val){if(replacerStack.length>0)for(let i=0;i<replacerStack.length;i++){let part=replacerStack[i];if(part[1]===key&&part[0]===val){val=part[2],replacerStack.splice(i,1);break}}return effectiveReplacer.call(this,key,val)}}function composeMessage(args){return args instanceof Error?`${args.name}: ${args.message}
|
|
4
|
+
${args.stack}`:typeof args>"u"?"undefined":typeof args=="string"?args:stringify(args,null,null,{depthLimit:5,edgesLimit:100})}function truncate(input,limit){return input.length>limit?input.substring(0,limit)+"\u2026":input}function addToUserAgent(extra){let originalUserAgent=globalThis.navigator.userAgent;originalUserAgent.includes(extra)||Object.defineProperty(globalThis.navigator,"userAgent",{get:function(){return [originalUserAgent,extra].join(" ")},configurable:!0});}function getStory(){let currentRender=globalThis.__STORYBOOK_PREVIEW__.currentRender;return currentRender&&"story"in currentRender?currentRender.story:{}}class StorybookTestRunnerError extends Error{constructor(params){let{storyId,errorMessage,logs=[],isMessageFormatted=!1}=params,message=isMessageFormatted?errorMessage:StorybookTestRunnerError.buildErrorMessage({storyId,errorMessage,logs});super(message),this.name="StorybookTestRunnerError";}static buildErrorMessage(params){let{storyId,errorMessage,logs=[],panel,errorMessagePrefix=""}=params,storyUrl=`${TEST_RUNNER_STORYBOOK_URL}?path=/story/${storyId}`,finalStoryUrl=panel?`${storyUrl}&addonPanel=${panel}`:storyUrl,separator=`
|
|
5
|
+
|
|
6
|
+
--------------------------------------------------`,finalLogs=logs.filter(err=>!err.includes(errorMessage)),extraLogs=finalLogs.length>0?separator+`
|
|
7
|
+
|
|
8
|
+
Browser logs:
|
|
9
|
+
|
|
10
|
+
`+finalLogs.join(`
|
|
11
|
+
|
|
12
|
+
`):"",linkPrefix=blue(`
|
|
13
|
+
Click to debug the error directly in Storybook:
|
|
14
|
+
${finalStoryUrl}
|
|
15
|
+
|
|
16
|
+
`);return `${errorMessagePrefix}${linkPrefix}Message:
|
|
17
|
+
${truncate(errorMessage,1e3)}
|
|
18
|
+
${extraLogs}`}}async function __waitForStorybook(){return new Promise((resolve,reject)=>{let timeout=setTimeout(()=>{reject();},1e4);if(document.querySelector("#root")||document.querySelector("#storybook-root"))return clearTimeout(timeout),resolve();let observer=new MutationObserver(()=>{(document.querySelector("#root")||document.querySelector("#storybook-root"))&&(clearTimeout(timeout),resolve(),observer.disconnect());});observer.observe(document.body,{childList:!0,subtree:!0});})}function isServerComponentError(error){return typeof error=="string"&&(error.includes("Only Server Components can be async at the moment.")||error.includes("A component was suspended by an uncached promise.")||error.includes("async/await is not yet supported in Client Components"))}function expectToHaveNoViolations(results){let violations=filterViolations(results.violations,results.toolOptions?.impactLevels??[]);function reporter(violations2){if(violations2.length===0)return null;let lineBreak=`
|
|
19
|
+
|
|
20
|
+
`;return violations2.map(violation=>violation.nodes.map(node=>{let selector=node.target.join(", ");return red(`Expected the HTML found at $('${selector}') to have no violations:`)+lineBreak+grey(node.html)+lineBreak+red("Received:")+lineBreak+red(`"${violation.help} (${violation.id})"`)+lineBreak+yellow(node.failureSummary)+lineBreak+(violation.helpUrl?red("You can find more information on this issue here:")+`
|
|
21
|
+
${blue(violation.helpUrl)}`:"")}).join(lineBreak)).join(lineBreak+"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"+lineBreak)}return {long:reporter(violations),short:`Found ${violations.length} a11y violations, run the test with 'a11y: { test: 'error' }' parameter to see the full report or debug it directly in Storybook.`}}function filterViolations(violations,impactLevels){return impactLevels&&impactLevels.length>0?violations.filter(v=>impactLevels.includes(v.impact)):violations}async function __getContext(storyId){return globalThis.__STORYBOOK_PREVIEW__.storyStore.loadStory({storyId})}async function __test(storyId){try{await __waitForStorybook();}catch{let message=`Timed out waiting for Storybook to load after 10 seconds. Are you sure the Storybook is running correctly in that URL? Is the Storybook private (e.g. under authentication layers)?
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
HTML: ${document.body.innerHTML}`;throw new StorybookTestRunnerError({storyId,errorMessage:message})}let channel=globalThis.__STORYBOOK_ADDONS_CHANNEL__;if(!channel)throw new StorybookTestRunnerError({storyId,errorMessage:"The test runner could not access the Storybook channel. Are you sure the Storybook is running correctly in that URL?"});addToUserAgent(`(StorybookTestRunner@${TEST_RUNNER_VERSION})`);let logs=[],hasErrors=!1,logLevelMapping={log:["info","verbose"],warn:["info","warn","verbose"],error:["info","warn","error","verbose"],info:["verbose"],trace:["verbose"],debug:["verbose"],group:["verbose"],groupCollapsed:["verbose"],table:["verbose"],dir:["verbose"]},spyOnConsole=(method,name)=>{let originalFn=console[method].bind(console);console[method]=function(...args){if(method==="error"&&isServerComponentError(args[0]))return;let shouldCollectError=method==="error";shouldCollectError&&(hasErrors=!0);let message=args.map(composeMessage).join(", ");if(method==="trace"){let stackTrace=new Error().stack;message+=`
|
|
25
|
+
${stackTrace}
|
|
26
|
+
`;}if(logLevelMapping[method].includes(TEST_RUNNER_LOG_LEVEL)||shouldCollectError){let prefix=`${bold(name)}: `;logs.push(prefix+message);}originalFn(...args);};};Object.entries({log:blue,info:blue,warn:yellow,error:red,dir:magenta,trace:magenta,group:magenta,groupCollapsed:magenta,table:magenta,debug:magenta}).forEach(([method,color])=>{spyOnConsole(method,color(method));});let cleanup=_listeners=>{Object.entries(_listeners).forEach(([eventName,listener])=>{channel.off(eventName,listener);});};return new Promise((resolve,reject)=>{let rejectWithFormattedError=(storyId2,message,panel)=>{let errorMessage=StorybookTestRunnerError.buildErrorMessage({storyId:storyId2,errorMessage:message,logs,panel});reject(new StorybookTestRunnerError({storyId:storyId2,errorMessage,logs,isMessageFormatted:!0}));},INTERACTIONS_PANEL="storybook/interactions/panel",A11Y_PANEL="storybook/a11y/panel",listeners={[TEST_RUNNER_RENDERED_EVENT]:data=>{if(cleanup(listeners),hasErrors){rejectWithFormattedError(storyId,"Browser console errors");return}else if(data?.reporters){let story=getStory(),a11yGlobals=story.globals?.a11y,a11yParameter=story.parameters?.a11y,a11yTestParameter=a11yParameter?.test,a11yReport=data.reporters.find(reporter=>reporter.type==="a11y");if(a11yParameter?.disable!==!0&&a11yParameter?.test!=="off"&&a11yGlobals?.manual!==!0&&a11yReport?.result?.violations?.length>0){let violations=expectToHaveNoViolations(a11yReport.result);if(violations&&a11yTestParameter==="error"){rejectWithFormattedError(storyId,violations.long,A11Y_PANEL);return}else if(violations&&a11yTestParameter==="todo"){let warningMessage=StorybookTestRunnerError.buildErrorMessage({storyId,errorMessagePrefix:`--------------------------
|
|
27
|
+
${story.title} > ${story.name}`,errorMessage:yellow(violations.short),logs,panel:A11Y_PANEL});logToPage(warningMessage);}}}resolve(document.getElementById("root"));},storyUnchanged:()=>{cleanup(listeners),resolve(document.getElementById("root"));},storyErrored:({description})=>{cleanup(listeners),rejectWithFormattedError(storyId,description,INTERACTIONS_PANEL);},storyThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},playFunctionThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},unhandledErrorsWhilePlaying:([error])=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},storyMissing:id=>{cleanup(listeners),id===storyId&&rejectWithFormattedError(storyId,"The story was missing when trying to access it.");}};Object.entries(listeners).forEach(([eventName,listener])=>{channel.on(eventName,listener);}),channel.emit("setCurrentStory",{storyId,viewMode:TEST_RUNNER_VIEW_MODE});})}globalThis.__test=__test,globalThis.__getContext=__getContext;});}async function testStory(storyId,page,context,playwrightFn){let _task=context.task;if(_task.meta.storyId=storyId,await page.evaluate(async storyId2=>await globalThis.__test(storyId2),storyId),playwrightFn){let storyContext=await page.evaluate(storyId2=>globalThis.__getContext(storyId2),storyId);await playwrightFn({page,context:storyContext});}let coverage=await page.evaluate(()=>globalThis.__coverage__);coverage&&await globalThis.__vitest_worker__.rpc.onAfterSuiteRun({coverage,testFiles:[],transformMode:"web"});}
|
|
28
|
+
|
|
29
|
+
export { convertToFilePath, prepareScript, setupPageScript, testStory };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RunnerTask } from 'vitest';
|
|
2
|
+
import { Channel } from 'storybook/internal/channels';
|
|
3
|
+
|
|
4
|
+
declare global {
|
|
5
|
+
var __STORYBOOK_ADDONS_CHANNEL__: Channel;
|
|
6
|
+
}
|
|
7
|
+
type Task = Partial<RunnerTask> & {
|
|
8
|
+
meta: Record<string, any>;
|
|
9
|
+
};
|
|
10
|
+
declare const modifyErrorMessage: ({ task }: {
|
|
11
|
+
task: Task;
|
|
12
|
+
}) => void;
|
|
13
|
+
|
|
14
|
+
export { Task, modifyErrorMessage };
|
|
@@ -1,30 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
a as n
|
|
3
|
-
} from "../_browser-chunks/chunk-VMSW5DPM.js";
|
|
4
|
-
import {
|
|
5
|
-
a as e
|
|
6
|
-
} from "../_browser-chunks/chunk-A47P2DCZ.js";
|
|
1
|
+
'use strict';
|
|
7
2
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import { Channel as _ } from "storybook/internal/channels";
|
|
11
|
-
var m = { setHandler: s.fn(), send: s.fn() };
|
|
12
|
-
globalThis.__STORYBOOK_ADDONS_CHANNEL__ ??= new _({ transport: m });
|
|
13
|
-
var c = /* @__PURE__ */ e(({ task: r }) => {
|
|
14
|
-
let o = r.meta;
|
|
15
|
-
if (r.type === "test" && r.result?.state === "fail" && o.storyId && r.result.errors?.[0]) {
|
|
16
|
-
let t = r.result.errors[0], a = `${import.meta.env.__STORYBOOK_URL__}/?path=/story/${o.storyId}&addonPanel=${n}`;
|
|
17
|
-
t.message = `
|
|
18
|
-
\x1B[34mClick to debug the error directly in Storybook: ${a}\x1B[39m
|
|
3
|
+
var vitest = require('vitest');
|
|
4
|
+
var channels = require('storybook/internal/channels');
|
|
19
5
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
});
|
|
27
|
-
l(c);
|
|
28
|
-
export {
|
|
29
|
-
c as modifyErrorMessage
|
|
30
|
-
};
|
|
6
|
+
var ADDON_ID="storybook/interactions",PANEL_ID=`${ADDON_ID}/panel`;var transport={setHandler:vitest.vi.fn(),send:vitest.vi.fn()};globalThis.__STORYBOOK_ADDONS_CHANNEL__??=new channels.Channel({transport});var modifyErrorMessage=({task})=>{let meta=task.meta;if(task.type==="test"&&task.result?.state==="fail"&&meta.storyId&&task.result.errors?.[0]){let currentError=task.result.errors[0],storyUrl=`${undefined.__STORYBOOK_URL__}/?path=/story/${meta.storyId}&addonPanel=${PANEL_ID}`;currentError.message=`
|
|
7
|
+
\x1B[34mClick to debug the error directly in Storybook: ${storyUrl}\x1B[39m
|
|
8
|
+
|
|
9
|
+
${currentError.message}`;}};vitest.beforeAll(()=>{if(globalThis.globalProjectAnnotations)return globalThis.globalProjectAnnotations.beforeAll()});vitest.afterEach(modifyErrorMessage);
|
|
10
|
+
|
|
11
|
+
exports.modifyErrorMessage = modifyErrorMessage;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { vi, beforeAll, afterEach } from 'vitest';
|
|
2
|
+
import { Channel } from 'storybook/internal/channels';
|
|
3
|
+
|
|
4
|
+
var ADDON_ID="storybook/interactions",PANEL_ID=`${ADDON_ID}/panel`;var transport={setHandler:vi.fn(),send:vi.fn()};globalThis.__STORYBOOK_ADDONS_CHANNEL__??=new Channel({transport});var modifyErrorMessage=({task})=>{let meta=task.meta;if(task.type==="test"&&task.result?.state==="fail"&&meta.storyId&&task.result.errors?.[0]){let currentError=task.result.errors[0],storyUrl=`${import.meta.env.__STORYBOOK_URL__}/?path=/story/${meta.storyId}&addonPanel=${PANEL_ID}`;currentError.message=`
|
|
5
|
+
\x1B[34mClick to debug the error directly in Storybook: ${storyUrl}\x1B[39m
|
|
6
|
+
|
|
7
|
+
${currentError.message}`;}};beforeAll(()=>{if(globalThis.globalProjectAnnotations)return globalThis.globalProjectAnnotations.beforeAll()});afterEach(modifyErrorMessage);
|
|
8
|
+
|
|
9
|
+
export { modifyErrorMessage };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TestContext } from 'vitest';
|
|
2
|
+
import { ComposedStoryFn, ComponentAnnotations } from 'storybook/internal/types';
|
|
3
|
+
|
|
4
|
+
declare module '@vitest/browser/context' {
|
|
5
|
+
interface BrowserCommands {
|
|
6
|
+
getInitialGlobals: () => Promise<Record<string, any>>;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Converts a file URL to a file path, handling URL encoding
|
|
11
|
+
*
|
|
12
|
+
* @param url The file URL to convert (e.g. file:///path/to/file.js)
|
|
13
|
+
* @returns The decoded file path
|
|
14
|
+
*/
|
|
15
|
+
declare const convertToFilePath: (url: string) => string;
|
|
16
|
+
declare const testStory: (exportName: string, story: ComposedStoryFn, meta: ComponentAnnotations, skipTags: string[]) => (context: TestContext & {
|
|
17
|
+
story: ComposedStoryFn;
|
|
18
|
+
}) => Promise<void>;
|
|
19
|
+
|
|
20
|
+
export { convertToFilePath, testStory };
|
|
@@ -1,71 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
a as n
|
|
3
|
-
} from "../_browser-chunks/chunk-A47P2DCZ.js";
|
|
1
|
+
'use strict';
|
|
4
2
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
var context = require('@vitest/browser/context');
|
|
4
|
+
var previewApi = require('storybook/preview-api');
|
|
5
|
+
var previewErrors = require('storybook/internal/preview-errors');
|
|
6
|
+
var viewport = require('storybook/viewport');
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
import { UnsupportedViewportDimensionError as f } from "storybook/internal/preview-errors";
|
|
11
|
-
import { MINIMAL_VIEWPORTS as y } from "storybook/viewport";
|
|
12
|
-
var l = {
|
|
13
|
-
width: 1200,
|
|
14
|
-
height: 900
|
|
15
|
-
}, u = /^\d+(px)?$/, V = /^(\d+(\.\d+)?%)$/, v = /^(\d+(\.\d+)?vw)$/, P = /^(\d+(\.\d+)?vh)$/, _ = /^(\d+)(em|rem)$/, w = /* @__PURE__ */ n((t, r) => {
|
|
16
|
-
if (u.test(t))
|
|
17
|
-
return Number.parseInt(t, 10);
|
|
18
|
-
if (V.test(t)) {
|
|
19
|
-
let e = parseFloat(t) / 100;
|
|
20
|
-
return Math.round(l[r] * e);
|
|
21
|
-
} else if (v.test(t)) {
|
|
22
|
-
let e = parseFloat(t) / 100;
|
|
23
|
-
return Math.round(l.width * e);
|
|
24
|
-
} else if (P.test(t)) {
|
|
25
|
-
let e = parseFloat(t) / 100;
|
|
26
|
-
return Math.round(l.height * e);
|
|
27
|
-
} else {
|
|
28
|
-
if (_.test(t))
|
|
29
|
-
return Number.parseInt(t, 10) * 16;
|
|
30
|
-
throw new f({ dimension: r, value: t });
|
|
31
|
-
}
|
|
32
|
-
}, "parseDimension"), h = /* @__PURE__ */ n(async (t = {}, r = {}) => {
|
|
33
|
-
let e, s = t.viewport ?? {}, i = r.viewport ?? {}, a = s.disable || s.disabled;
|
|
34
|
-
i.value && !a ? e = i.value : a || (e = s.defaultViewport);
|
|
35
|
-
let { page: o } = await import("@vitest/browser/context").catch(() => ({
|
|
36
|
-
page: null
|
|
37
|
-
}));
|
|
38
|
-
if (!o || !globalThis.__vitest_browser__)
|
|
39
|
-
return;
|
|
40
|
-
let p = {
|
|
41
|
-
...y,
|
|
42
|
-
...s.viewports,
|
|
43
|
-
...s.options
|
|
44
|
-
}, m = l.width, d = l.height;
|
|
45
|
-
if (e && e in p) {
|
|
46
|
-
let c = p[e].styles;
|
|
47
|
-
if (c?.width && c?.height) {
|
|
48
|
-
let { width: b, height: g } = c;
|
|
49
|
-
m = w(b, "width"), d = w(g, "height");
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
await o.viewport(m, d);
|
|
53
|
-
}, "setViewport");
|
|
8
|
+
var DEFAULT_VIEWPORT_DIMENSIONS={width:1200,height:900},validPixelOrNumber=/^\d+(px)?$/,percentagePattern=/^(\d+(\.\d+)?%)$/,vwPattern=/^(\d+(\.\d+)?vw)$/,vhPattern=/^(\d+(\.\d+)?vh)$/,emRemPattern=/^(\d+)(em|rem)$/,parseDimension=(value,dimension)=>{if(validPixelOrNumber.test(value))return Number.parseInt(value,10);if(percentagePattern.test(value)){let percentageValue=parseFloat(value)/100;return Math.round(DEFAULT_VIEWPORT_DIMENSIONS[dimension]*percentageValue)}else if(vwPattern.test(value)){let vwValue=parseFloat(value)/100;return Math.round(DEFAULT_VIEWPORT_DIMENSIONS.width*vwValue)}else if(vhPattern.test(value)){let vhValue=parseFloat(value)/100;return Math.round(DEFAULT_VIEWPORT_DIMENSIONS.height*vhValue)}else {if(emRemPattern.test(value))return Number.parseInt(value,10)*16;throw new previewErrors.UnsupportedViewportDimensionError({dimension,value})}},setViewport=async(parameters={},globals={},pwPage)=>{let defaultViewport,viewportsParam=parameters.viewport??{},viewportsGlobal=globals.viewport??{},isDisabled=viewportsParam.disable||viewportsParam.disabled;viewportsGlobal.value&&!isDisabled?defaultViewport=viewportsGlobal.value:isDisabled||(defaultViewport=viewportsParam.defaultViewport);let page=pwPage;if(page||(page=(await import('@vitest/browser/context').catch(()=>({page:null}))).page),!page||!globalThis.__vitest_browser__)return;let viewports={...viewport.MINIMAL_VIEWPORTS,...viewportsParam.viewports,...viewportsParam.options},viewportWidth=DEFAULT_VIEWPORT_DIMENSIONS.width,viewportHeight=DEFAULT_VIEWPORT_DIMENSIONS.height;if(defaultViewport&&defaultViewport in viewports){let styles=viewports[defaultViewport].styles;if(styles?.width&&styles?.height){let{width,height}=styles;viewportWidth=parseDimension(width,"width"),viewportHeight=parseDimension(height,"height");}}await page.viewport(viewportWidth,viewportHeight);};var {getInitialGlobals}=context.server.commands,convertToFilePath=url=>url.replace(/^file:\/\//,"").replace(/^\/+([a-zA-Z]:)/,"$1").replace(/%20/g," "),testStory=(exportName,story,meta,skipTags)=>async context=>{let annotations=previewApi.getCsfFactoryAnnotations(story,meta),composedStory=previewApi.composeStory(annotations.story,annotations.meta,{initialGlobals:await getInitialGlobals?.()??{}},annotations.preview??globalThis.globalProjectAnnotations,exportName);(composedStory===void 0||skipTags?.some(tag=>composedStory.tags.includes(tag)))&&context.skip(),context.story=composedStory;let _task=context.task;_task.meta.storyId=composedStory.id,await setViewport(composedStory.parameters,composedStory.globals),await composedStory.run(),_task.meta.reports=composedStory.reporting.reports;};
|
|
54
9
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
let a = M(r, e), o = T(
|
|
58
|
-
a.story,
|
|
59
|
-
a.meta,
|
|
60
|
-
{ initialGlobals: await S?.() ?? {} },
|
|
61
|
-
a.preview ?? globalThis.globalProjectAnnotations,
|
|
62
|
-
t
|
|
63
|
-
);
|
|
64
|
-
(o === void 0 || s?.some((m) => o.tags.includes(m))) && i.skip(), i.story = o;
|
|
65
|
-
let p = i.task;
|
|
66
|
-
p.meta.storyId = o.id, await h(o.parameters, o.globals), await o.run(), p.meta.reports = o.reporting.reports;
|
|
67
|
-
}, "testStory");
|
|
68
|
-
export {
|
|
69
|
-
N as convertToFilePath,
|
|
70
|
-
$ as testStory
|
|
71
|
-
};
|
|
10
|
+
exports.convertToFilePath = convertToFilePath;
|
|
11
|
+
exports.testStory = testStory;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { server } from '@vitest/browser/context';
|
|
2
|
+
import { getCsfFactoryAnnotations, composeStory } from 'storybook/preview-api';
|
|
3
|
+
import { UnsupportedViewportDimensionError } from 'storybook/internal/preview-errors';
|
|
4
|
+
import { MINIMAL_VIEWPORTS } from 'storybook/viewport';
|
|
5
|
+
|
|
6
|
+
var DEFAULT_VIEWPORT_DIMENSIONS={width:1200,height:900},validPixelOrNumber=/^\d+(px)?$/,percentagePattern=/^(\d+(\.\d+)?%)$/,vwPattern=/^(\d+(\.\d+)?vw)$/,vhPattern=/^(\d+(\.\d+)?vh)$/,emRemPattern=/^(\d+)(em|rem)$/,parseDimension=(value,dimension)=>{if(validPixelOrNumber.test(value))return Number.parseInt(value,10);if(percentagePattern.test(value)){let percentageValue=parseFloat(value)/100;return Math.round(DEFAULT_VIEWPORT_DIMENSIONS[dimension]*percentageValue)}else if(vwPattern.test(value)){let vwValue=parseFloat(value)/100;return Math.round(DEFAULT_VIEWPORT_DIMENSIONS.width*vwValue)}else if(vhPattern.test(value)){let vhValue=parseFloat(value)/100;return Math.round(DEFAULT_VIEWPORT_DIMENSIONS.height*vhValue)}else {if(emRemPattern.test(value))return Number.parseInt(value,10)*16;throw new UnsupportedViewportDimensionError({dimension,value})}},setViewport=async(parameters={},globals={},pwPage)=>{let defaultViewport,viewportsParam=parameters.viewport??{},viewportsGlobal=globals.viewport??{},isDisabled=viewportsParam.disable||viewportsParam.disabled;viewportsGlobal.value&&!isDisabled?defaultViewport=viewportsGlobal.value:isDisabled||(defaultViewport=viewportsParam.defaultViewport);let page=pwPage;if(page||(page=(await import('@vitest/browser/context').catch(()=>({page:null}))).page),!page||!globalThis.__vitest_browser__)return;let viewports={...MINIMAL_VIEWPORTS,...viewportsParam.viewports,...viewportsParam.options},viewportWidth=DEFAULT_VIEWPORT_DIMENSIONS.width,viewportHeight=DEFAULT_VIEWPORT_DIMENSIONS.height;if(defaultViewport&&defaultViewport in viewports){let styles=viewports[defaultViewport].styles;if(styles?.width&&styles?.height){let{width,height}=styles;viewportWidth=parseDimension(width,"width"),viewportHeight=parseDimension(height,"height");}}await page.viewport(viewportWidth,viewportHeight);};var {getInitialGlobals}=server.commands,convertToFilePath=url=>url.replace(/^file:\/\//,"").replace(/^\/+([a-zA-Z]:)/,"$1").replace(/%20/g," "),testStory=(exportName,story,meta,skipTags)=>async context=>{let annotations=getCsfFactoryAnnotations(story,meta),composedStory=composeStory(annotations.story,annotations.meta,{initialGlobals:await getInitialGlobals?.()??{}},annotations.preview??globalThis.globalProjectAnnotations,exportName);(composedStory===void 0||skipTags?.some(tag=>composedStory.tags.includes(tag)))&&context.skip(),context.story=composedStory;let _task=context.task;_task.meta.storyId=composedStory.id,await setViewport(composedStory.parameters,composedStory.globals),await composedStory.run(),_task.meta.reports=composedStory.reporting.reports;};
|
|
7
|
+
|
|
8
|
+
export { convertToFilePath, testStory };
|
package/manager.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
require('./dist/manager');
|
package/manager.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './dist/manager';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/addon-vitest",
|
|
3
|
-
"version": "0.0.0-pr-
|
|
3
|
+
"version": "0.0.0-pr-32047-sha-6cc3189c",
|
|
4
4
|
"description": "Storybook addon for testing components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"storybook-addons",
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
"url": "https://opencollective.com/storybook"
|
|
24
24
|
},
|
|
25
25
|
"license": "MIT",
|
|
26
|
-
"type": "module",
|
|
27
26
|
"imports": {
|
|
28
27
|
"#manager-store": {
|
|
29
28
|
"storybook": "./src/manager-store.mock.ts",
|
|
@@ -33,20 +32,51 @@
|
|
|
33
32
|
"exports": {
|
|
34
33
|
".": {
|
|
35
34
|
"types": "./dist/index.d.ts",
|
|
36
|
-
"
|
|
35
|
+
"import": "./dist/index.mjs",
|
|
36
|
+
"require": "./dist/index.js"
|
|
37
37
|
},
|
|
38
|
-
"./internal/coverage-reporter": "./dist/node/coverage-reporter.js",
|
|
39
|
-
"./internal/global-setup": "./dist/vitest-plugin/global-setup.js",
|
|
40
|
-
"./internal/setup-file": "./dist/vitest-plugin/setup-file.js",
|
|
41
|
-
"./internal/test-utils": "./dist/vitest-plugin/test-utils.js",
|
|
42
|
-
"./manager": "./dist/manager.js",
|
|
43
|
-
"./package.json": "./package.json",
|
|
44
|
-
"./postinstall": "./dist/postinstall.js",
|
|
45
|
-
"./preset": "./dist/preset.js",
|
|
46
|
-
"./vitest": "./dist/node/vitest.js",
|
|
47
38
|
"./vitest-plugin": {
|
|
48
39
|
"types": "./dist/vitest-plugin/index.d.ts",
|
|
49
|
-
"
|
|
40
|
+
"import": "./dist/vitest-plugin/index.mjs",
|
|
41
|
+
"require": "./dist/vitest-plugin/index.js"
|
|
42
|
+
},
|
|
43
|
+
"./internal/global-setup": {
|
|
44
|
+
"types": "./dist/vitest-plugin/global-setup.d.ts",
|
|
45
|
+
"import": "./dist/vitest-plugin/global-setup.mjs",
|
|
46
|
+
"require": "./dist/vitest-plugin/global-setup.js"
|
|
47
|
+
},
|
|
48
|
+
"./internal/setup-file": {
|
|
49
|
+
"types": "./dist/vitest-plugin/setup-file.d.ts",
|
|
50
|
+
"import": "./dist/vitest-plugin/setup-file.mjs"
|
|
51
|
+
},
|
|
52
|
+
"./internal/test-utils": {
|
|
53
|
+
"types": "./dist/vitest-plugin/test-utils.d.ts",
|
|
54
|
+
"import": "./dist/vitest-plugin/test-utils.mjs",
|
|
55
|
+
"require": "./dist/vitest-plugin/test-utils.js"
|
|
56
|
+
},
|
|
57
|
+
"./internal/playwright-utils": {
|
|
58
|
+
"types": "./dist/vitest-plugin/playwright-utils.d.ts",
|
|
59
|
+
"import": "./dist/vitest-plugin/playwright-utils.mjs",
|
|
60
|
+
"require": "./dist/vitest-plugin/playwright-utils.js"
|
|
61
|
+
},
|
|
62
|
+
"./internal/coverage-reporter": {
|
|
63
|
+
"types": "./dist/node/coverage-reporter.d.ts",
|
|
64
|
+
"import": "./dist/node/coverage-reporter.mjs",
|
|
65
|
+
"require": "./dist/node/coverage-reporter.js"
|
|
66
|
+
},
|
|
67
|
+
"./manager": "./dist/manager.js",
|
|
68
|
+
"./preset": "./dist/preset.js",
|
|
69
|
+
"./postinstall": "./dist/postinstall.js",
|
|
70
|
+
"./package.json": "./package.json"
|
|
71
|
+
},
|
|
72
|
+
"main": "dist/index.js",
|
|
73
|
+
"module": "dist/index.mjs",
|
|
74
|
+
"types": "dist/index.d.ts",
|
|
75
|
+
"typesVersions": {
|
|
76
|
+
"*": {
|
|
77
|
+
"*": [
|
|
78
|
+
"dist/index.d.ts"
|
|
79
|
+
]
|
|
50
80
|
}
|
|
51
81
|
},
|
|
52
82
|
"files": [
|
|
@@ -61,8 +91,8 @@
|
|
|
61
91
|
"!src/**/*"
|
|
62
92
|
],
|
|
63
93
|
"scripts": {
|
|
64
|
-
"check": "jiti ../../../scripts/
|
|
65
|
-
"prep": "jiti ../../../scripts/
|
|
94
|
+
"check": "jiti ../../../scripts/prepare/check.ts",
|
|
95
|
+
"prep": "jiti ../../../scripts/prepare/addon-bundle.ts"
|
|
66
96
|
},
|
|
67
97
|
"dependencies": {
|
|
68
98
|
"@storybook/global": "^5.0.0",
|
|
@@ -99,7 +129,7 @@
|
|
|
99
129
|
"peerDependencies": {
|
|
100
130
|
"@vitest/browser": "^3.0.0",
|
|
101
131
|
"@vitest/runner": "^3.0.0",
|
|
102
|
-
"storybook": "^0.0.0-pr-
|
|
132
|
+
"storybook": "^0.0.0-pr-32047-sha-6cc3189c",
|
|
103
133
|
"vitest": "^3.0.0"
|
|
104
134
|
},
|
|
105
135
|
"peerDependenciesMeta": {
|
|
@@ -116,6 +146,55 @@
|
|
|
116
146
|
"publishConfig": {
|
|
117
147
|
"access": "public"
|
|
118
148
|
},
|
|
149
|
+
"bundler": {
|
|
150
|
+
"exportEntries": [
|
|
151
|
+
"./src/index.ts",
|
|
152
|
+
"./src/vitest-plugin/test-utils.ts",
|
|
153
|
+
"./src/vitest-plugin/playwright-utils.ts",
|
|
154
|
+
"./src/vitest-plugin/setup-file.ts"
|
|
155
|
+
],
|
|
156
|
+
"managerEntries": [
|
|
157
|
+
"./src/manager.tsx"
|
|
158
|
+
],
|
|
159
|
+
"nodeEntries": [
|
|
160
|
+
"./src/preset.ts",
|
|
161
|
+
"./src/postinstall.ts",
|
|
162
|
+
{
|
|
163
|
+
"file": "./src/dummy.ts",
|
|
164
|
+
"formats": [
|
|
165
|
+
"esm"
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"file": "./src/node/vitest.ts",
|
|
170
|
+
"formats": [
|
|
171
|
+
"esm",
|
|
172
|
+
"cjs"
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"file": "./src/node/coverage-reporter.ts",
|
|
177
|
+
"formats": [
|
|
178
|
+
"esm",
|
|
179
|
+
"cjs"
|
|
180
|
+
]
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"file": "./src/vitest-plugin/index.ts",
|
|
184
|
+
"formats": [
|
|
185
|
+
"cjs",
|
|
186
|
+
"esm"
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"file": "./src/vitest-plugin/global-setup.ts",
|
|
191
|
+
"formats": [
|
|
192
|
+
"cjs",
|
|
193
|
+
"esm"
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
},
|
|
119
198
|
"storybook": {
|
|
120
199
|
"displayName": "Test",
|
|
121
200
|
"unsupportedFrameworks": [
|
package/postinstall.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/postinstall');
|
package/postinstall.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/postinstall.mjs';
|
package/preset.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
module.exports = require('./dist/preset');
|
package/preset.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/preset.mjs';
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// ../../core/src/component-testing/constants.ts
|
|
2
|
-
var e = "storybook/interactions", s = `${e}/panel`, n = "writing-tests/integrations/vitest-addon", N = `${n}#what-happens-when-there-are-different-test-results-in-multiple-environments`;
|
|
3
|
-
|
|
4
|
-
// ../a11y/src/constants.ts
|
|
5
|
-
var t = "storybook/a11y", r = `${t}/panel`;
|
|
6
|
-
var a = `${t}/result`, c = `${t}/request`, p = `${t}/running`, A = `${t}/error`, O = `${t}/manual`, I = `${t}/select`, i = "writing-tests/accessibility-testing", D = `${i}#why-are-my-tests-failing-in-different-environments`;
|
|
7
|
-
|
|
8
|
-
// src/constants.ts
|
|
9
|
-
var o = "storybook/test", R = `${o}/test-provider`;
|
|
10
|
-
var _ = "writing-tests/integrations/vitest-addon", y = `${_}#what-happens-if-vitest-itself-has-an-error`;
|
|
11
|
-
var E = {
|
|
12
|
-
id: o,
|
|
13
|
-
initialState: {
|
|
14
|
-
config: {
|
|
15
|
-
coverage: !1,
|
|
16
|
-
a11y: !1
|
|
17
|
-
},
|
|
18
|
-
watching: !1,
|
|
19
|
-
cancelling: !1,
|
|
20
|
-
fatalError: void 0,
|
|
21
|
-
indexUrl: void 0,
|
|
22
|
-
previewAnnotations: [],
|
|
23
|
-
currentRun: {
|
|
24
|
-
triggeredBy: void 0,
|
|
25
|
-
config: {
|
|
26
|
-
coverage: !1,
|
|
27
|
-
a11y: !1
|
|
28
|
-
},
|
|
29
|
-
componentTestCount: {
|
|
30
|
-
success: 0,
|
|
31
|
-
error: 0
|
|
32
|
-
},
|
|
33
|
-
a11yCount: {
|
|
34
|
-
success: 0,
|
|
35
|
-
warning: 0,
|
|
36
|
-
error: 0
|
|
37
|
-
},
|
|
38
|
-
storyIds: void 0,
|
|
39
|
-
totalTestCount: void 0,
|
|
40
|
-
startedAt: void 0,
|
|
41
|
-
finishedAt: void 0,
|
|
42
|
-
unhandledErrors: [],
|
|
43
|
-
coverageSummary: void 0
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}, d = ["global", "run-all"], l = `UNIVERSAL_STORE:${E.id}`;
|
|
47
|
-
var x = "storybook/component-test", L = "storybook/a11y";
|
|
48
|
-
|
|
49
|
-
export {
|
|
50
|
-
s as a,
|
|
51
|
-
t as b,
|
|
52
|
-
r as c,
|
|
53
|
-
o as d,
|
|
54
|
-
R as e,
|
|
55
|
-
y as f,
|
|
56
|
-
E as g,
|
|
57
|
-
d as h,
|
|
58
|
-
x as i,
|
|
59
|
-
L as j
|
|
60
|
-
};
|