[{"data":1,"prerenderedAt":414},["ShallowReactive",2],{"navigation_docs":3,"-fake-browser-testing-frameworks":133,"-fake-browser-testing-frameworks-surround":411},[4,22,51,62,73,84,99,118],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Get Started","/get-started","0.get-started",[9,13,17],{"title":10,"path":11,"stem":12},"Introduction","/get-started/introduction","0.get-started/0.introduction",{"title":14,"path":15,"stem":16},"Browser Support","/get-started/browser-support","0.get-started/1.browser-support",{"title":18,"path":19,"stem":20},"Contributing","/get-started/contributing","0.get-started/2.contributing",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Fake Browser","/fake-browser","fake-browser",[27,31,35,39,43,47],{"title":28,"path":29,"stem":30},"Installation","/fake-browser/installation","fake-browser/0.installation",{"title":32,"path":33,"stem":34},"Testing Frameworks","/fake-browser/testing-frameworks","fake-browser/1.testing-frameworks",{"title":36,"path":37,"stem":38},"Triggering Events","/fake-browser/triggering-events","fake-browser/2.triggering-events",{"title":40,"path":41,"stem":42},"Resetting State","/fake-browser/reseting-state","fake-browser/3.reseting-state",{"title":44,"path":45,"stem":46},"Implemented Apis","/fake-browser/implemented-apis","fake-browser/4.implemented-apis",{"title":48,"path":49,"stem":50},"Api","/fake-browser/api","fake-browser/api",{"title":52,"path":53,"stem":54,"children":55,"page":21},"Isolated Element","/isolated-element","isolated-element",[56,59],{"title":28,"path":57,"stem":58},"/isolated-element/installation","isolated-element/0.installation",{"title":48,"path":60,"stem":61},"/isolated-element/api","isolated-element/api",{"title":63,"path":64,"stem":65,"children":66,"page":21},"Job Scheduler","/job-scheduler","job-scheduler",[67,70],{"title":28,"path":68,"stem":69},"/job-scheduler/installation","job-scheduler/0.installation",{"title":48,"path":71,"stem":72},"/job-scheduler/api","job-scheduler/api",{"title":74,"path":75,"stem":76,"children":77,"page":21},"Match Patterns","/match-patterns","match-patterns",[78,81],{"title":28,"path":79,"stem":80},"/match-patterns/installation","match-patterns/0.installation",{"title":48,"path":82,"stem":83},"/match-patterns/api","match-patterns/api",{"title":85,"path":86,"stem":87,"children":88,"page":21},"Messaging","/messaging","messaging",[89,92,96],{"title":28,"path":90,"stem":91},"/messaging/installation","messaging/0.installation",{"title":93,"path":94,"stem":95},"Protocol Maps","/messaging/protocol-maps","messaging/1.protocol-maps",{"title":48,"path":97,"stem":98},"/messaging/api","messaging/api",{"title":100,"path":101,"stem":102,"children":103,"page":21},"Proxy Service","/proxy-service","proxy-service",[104,107,111,115],{"title":28,"path":105,"stem":106},"/proxy-service/installation","proxy-service/0.installation",{"title":108,"path":109,"stem":110},"Defining Services","/proxy-service/defining-services","proxy-service/1.defining-services",{"title":112,"path":113,"stem":114},"Service Keys","/proxy-service/service-keys","proxy-service/2.service-keys",{"title":48,"path":116,"stem":117},"/proxy-service/api","proxy-service/api",{"title":119,"path":120,"stem":121,"children":122,"page":21},"Storage","/storage","storage",[123,126,130],{"title":28,"path":124,"stem":125},"/storage/installation","storage/0.installation",{"title":127,"path":128,"stem":129},"Typescript","/storage/typescript","storage/1.typescript",{"title":48,"path":131,"stem":132},"/storage/api","storage/api",{"id":134,"title":32,"body":135,"description":163,"extension":405,"links":406,"meta":407,"navigation":408,"path":33,"seo":409,"stem":34,"__hash__":410},"docs/fake-browser/1.testing-frameworks.md",{"type":136,"value":137,"toc":400},"minimark",[138,146,157,188,208,211,216,226,310,314,321,367,371,379,396],[139,140,141,145],"p",{},[142,143,144],"code",{},"@webext-core/fake-browser"," does not depend on a specific testing framework, it will work with all of them.",[139,147,148,149,152,153,156],{},"Setup is simple: import ",[142,150,151],{},"@webext-core/fake-browser/auto"," before importing the ",[142,154,155],{},"webextension-polyfill",". No need to mock any modules!",[158,159,164],"pre",{"className":160,"code":161,"language":162,"meta":163,"style":163},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import '@webext-core/fake-browser/auto';\n","ts","",[142,165,166],{"__ignoreMap":163},[167,168,171,175,179,182,185],"span",{"class":169,"line":170},"line",1,[167,172,174],{"class":173},"s7zQu","import",[167,176,178],{"class":177},"sMK4o"," '",[167,180,151],{"class":181},"sfazB",[167,183,184],{"class":177},"'",[167,186,187],{"class":177},";\n",[139,189,190,192,193,196,197,200,201,204,205,207],{},[142,191,151],{}," just assigns the global ",[142,194,195],{},"chrome"," and ",[142,198,199],{},"browser"," variables to ",[142,202,203],{},"fakeBrowser",". This is enough to make the polyfill think it's already in a browser environment with a ",[142,206,199],{}," variable, making the polyfill a noop.",[139,209,210],{},"Below are some examples for how to do this in major testing frameworks.",[212,213,215],"h2",{"id":214},"vitest","Vitest",[139,217,218,219,221,222,225],{},"Add ",[142,220,151],{}," to your ",[142,223,224],{},"vitest.config.ts"," file as a setup file:",[158,227,229],{"className":160,"code":228,"language":162,"meta":163,"style":163},"// vitest.config.ts\nexport default defineConfig({\n  test: {\n    setupFiles: ['@webext-core/fake-browser/auto'],\n  },\n});\n",[142,230,231,237,257,270,293,299],{"__ignoreMap":163},[167,232,233],{"class":169,"line":170},[167,234,236],{"class":235},"sHwdD","// vitest.config.ts\n",[167,238,240,243,246,250,254],{"class":169,"line":239},2,[167,241,242],{"class":173},"export",[167,244,245],{"class":173}," default",[167,247,249],{"class":248},"s2Zo4"," defineConfig",[167,251,253],{"class":252},"sTEyZ","(",[167,255,256],{"class":177},"{\n",[167,258,260,264,267],{"class":169,"line":259},3,[167,261,263],{"class":262},"swJcz","  test",[167,265,266],{"class":177},":",[167,268,269],{"class":177}," {\n",[167,271,273,276,278,281,283,285,287,290],{"class":169,"line":272},4,[167,274,275],{"class":262},"    setupFiles",[167,277,266],{"class":177},[167,279,280],{"class":252}," [",[167,282,184],{"class":177},[167,284,151],{"class":181},[167,286,184],{"class":177},[167,288,289],{"class":252},"]",[167,291,292],{"class":177},",\n",[167,294,296],{"class":169,"line":295},5,[167,297,298],{"class":177},"  },\n",[167,300,302,305,308],{"class":169,"line":301},6,[167,303,304],{"class":177},"}",[167,306,307],{"class":252},")",[167,309,187],{"class":177},[212,311,313],{"id":312},"jest","Jest",[139,315,218,316,221,318,225],{},[142,317,151],{},[142,319,320],{},"jest.config.js",[158,322,326],{"className":323,"code":324,"language":325,"meta":163,"style":163},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// jest.config.js\nmodule.exports = {\n  setupFiles: ['@webext-core/fake-browser/auto'],\n};\n","js",[142,327,328,333,343,362],{"__ignoreMap":163},[167,329,330],{"class":169,"line":170},[167,331,332],{"class":235},"// jest.config.js\n",[167,334,335,338,341],{"class":169,"line":239},[167,336,337],{"class":177},"module.exports",[167,339,340],{"class":177}," =",[167,342,269],{"class":177},[167,344,345,348,350,352,354,356,358,360],{"class":169,"line":259},[167,346,347],{"class":262},"  setupFiles",[167,349,266],{"class":177},[167,351,280],{"class":252},[167,353,184],{"class":177},[167,355,151],{"class":181},[167,357,184],{"class":177},[167,359,289],{"class":252},[167,361,292],{"class":177},[167,363,364],{"class":169,"line":272},[167,365,366],{"class":177},"};\n",[212,368,370],{"id":369},"bun","Bun",[139,372,218,373,221,375,378],{},[142,374,151],{},[142,376,377],{},"bunfig.toml"," as a preload file:",[158,380,384],{"className":381,"code":382,"language":383,"meta":163,"style":163},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[test]\npreload = ['@webext-core/fake-browser/auto']\n","toml",[142,385,386,391],{"__ignoreMap":163},[167,387,388],{"class":169,"line":170},[167,389,390],{},"[test]\n",[167,392,393],{"class":169,"line":239},[167,394,395],{},"preload = ['@webext-core/fake-browser/auto']\n",[397,398,399],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":163,"searchDepth":239,"depth":239,"links":401},[402,403,404],{"id":214,"depth":239,"text":215},{"id":312,"depth":239,"text":313},{"id":369,"depth":239,"text":370},"md",null,{},true,{"title":32,"description":163},"gR-N5iBcDbCZmvSMIDLltHtLhXZ1K2i22wUv5AFvij4",[412,413],{"title":28,"path":29,"stem":30,"description":163,"children":-1},{"title":36,"path":37,"stem":38,"description":163,"children":-1},1779300018892]