[{"data":1,"prerenderedAt":408},["ShallowReactive",2],{"navigation_docs":3,"-fake-browser-testing-frameworks":127,"-fake-browser-testing-frameworks-surround":405},[4,22,51,62,73,84,99,115],{"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 Reference","/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],{"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":116,"path":117,"stem":118,"children":119,"page":21},"Storage","/storage","storage",[120,123],{"title":28,"path":121,"stem":122},"/storage/installation","storage/0.installation",{"title":124,"path":125,"stem":126},"Typescript","/storage/typescript","storage/1.typescript",{"id":128,"title":32,"body":129,"description":157,"extension":399,"links":400,"meta":401,"navigation":402,"path":33,"seo":403,"stem":34,"__hash__":404},"docs/fake-browser/1.testing-frameworks.md",{"type":130,"value":131,"toc":394},"minimark",[132,140,151,182,202,205,210,220,304,308,315,361,365,373,390],[133,134,135,139],"p",{},[136,137,138],"code",{},"@webext-core/fake-browser"," does not depend on a specific testing framework, it will work with all of them.",[133,141,142,143,146,147,150],{},"Setup is simple: import ",[136,144,145],{},"@webext-core/fake-browser/auto"," before importing the ",[136,148,149],{},"webextension-polyfill",". No need to mock any modules!",[152,153,158],"pre",{"className":154,"code":155,"language":156,"meta":157,"style":157},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import '@webext-core/fake-browser/auto';\n","ts","",[136,159,160],{"__ignoreMap":157},[161,162,165,169,173,176,179],"span",{"class":163,"line":164},"line",1,[161,166,168],{"class":167},"s7zQu","import",[161,170,172],{"class":171},"sMK4o"," '",[161,174,145],{"class":175},"sfazB",[161,177,178],{"class":171},"'",[161,180,181],{"class":171},";\n",[133,183,184,186,187,190,191,194,195,198,199,201],{},[136,185,145],{}," just assigns the global ",[136,188,189],{},"chrome"," and ",[136,192,193],{},"browser"," variables to ",[136,196,197],{},"fakeBrowser",". This is enough to make the polyfill think it's already in a browser environment with a ",[136,200,193],{}," variable, making the polyfill a noop.",[133,203,204],{},"Below are some examples for how to do this in major testing frameworks.",[206,207,209],"h2",{"id":208},"vitest","Vitest",[133,211,212,213,215,216,219],{},"Add ",[136,214,145],{}," to your ",[136,217,218],{},"vitest.config.ts"," file as a setup file:",[152,221,223],{"className":154,"code":222,"language":156,"meta":157,"style":157},"// vitest.config.ts\nexport default defineConfig({\n  test: {\n    setupFiles: ['@webext-core/fake-browser/auto'],\n  },\n});\n",[136,224,225,231,251,264,287,293],{"__ignoreMap":157},[161,226,227],{"class":163,"line":164},[161,228,230],{"class":229},"sHwdD","// vitest.config.ts\n",[161,232,234,237,240,244,248],{"class":163,"line":233},2,[161,235,236],{"class":167},"export",[161,238,239],{"class":167}," default",[161,241,243],{"class":242},"s2Zo4"," defineConfig",[161,245,247],{"class":246},"sTEyZ","(",[161,249,250],{"class":171},"{\n",[161,252,254,258,261],{"class":163,"line":253},3,[161,255,257],{"class":256},"swJcz","  test",[161,259,260],{"class":171},":",[161,262,263],{"class":171}," {\n",[161,265,267,270,272,275,277,279,281,284],{"class":163,"line":266},4,[161,268,269],{"class":256},"    setupFiles",[161,271,260],{"class":171},[161,273,274],{"class":246}," [",[161,276,178],{"class":171},[161,278,145],{"class":175},[161,280,178],{"class":171},[161,282,283],{"class":246},"]",[161,285,286],{"class":171},",\n",[161,288,290],{"class":163,"line":289},5,[161,291,292],{"class":171},"  },\n",[161,294,296,299,302],{"class":163,"line":295},6,[161,297,298],{"class":171},"}",[161,300,301],{"class":246},")",[161,303,181],{"class":171},[206,305,307],{"id":306},"jest","Jest",[133,309,212,310,215,312,219],{},[136,311,145],{},[136,313,314],{},"jest.config.js",[152,316,320],{"className":317,"code":318,"language":319,"meta":157,"style":157},"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",[136,321,322,327,337,356],{"__ignoreMap":157},[161,323,324],{"class":163,"line":164},[161,325,326],{"class":229},"// jest.config.js\n",[161,328,329,332,335],{"class":163,"line":233},[161,330,331],{"class":171},"module.exports",[161,333,334],{"class":171}," =",[161,336,263],{"class":171},[161,338,339,342,344,346,348,350,352,354],{"class":163,"line":253},[161,340,341],{"class":256},"  setupFiles",[161,343,260],{"class":171},[161,345,274],{"class":246},[161,347,178],{"class":171},[161,349,145],{"class":175},[161,351,178],{"class":171},[161,353,283],{"class":246},[161,355,286],{"class":171},[161,357,358],{"class":163,"line":266},[161,359,360],{"class":171},"};\n",[206,362,364],{"id":363},"bun","Bun",[133,366,212,367,215,369,372],{},[136,368,145],{},[136,370,371],{},"bunfig.toml"," as a preload file:",[152,374,378],{"className":375,"code":376,"language":377,"meta":157,"style":157},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[test]\npreload = ['@webext-core/fake-browser/auto']\n","toml",[136,379,380,385],{"__ignoreMap":157},[161,381,382],{"class":163,"line":164},[161,383,384],{},"[test]\n",[161,386,387],{"class":163,"line":233},[161,388,389],{},"preload = ['@webext-core/fake-browser/auto']\n",[391,392,393],"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":157,"searchDepth":233,"depth":233,"links":395},[396,397,398],{"id":208,"depth":233,"text":209},{"id":306,"depth":233,"text":307},{"id":363,"depth":233,"text":364},"md",null,{},true,{"title":32,"description":157},"gR-N5iBcDbCZmvSMIDLltHtLhXZ1K2i22wUv5AFvij4",[406,407],{"title":28,"path":29,"stem":30,"description":157,"children":-1},{"title":36,"path":37,"stem":38,"description":157,"children":-1},1779312968977]