Javascript Jest Puppeter evaluateHandle中拒绝访问扩展API
我的扩展架构:Javascript Jest Puppeter evaluateHandle中拒绝访问扩展API,javascript,google-chrome-extension,jestjs,puppeteer,Javascript,Google Chrome Extension,Jestjs,Puppeteer,我的扩展架构: 后台页存储扩展状态。我认为这很好,因为将状态保持在一个位置可以使调试更容易 内容脚本根据扩展状态在网页上执行某些操作 每次用户通过设置页面对扩展状态进行更新时,都会在后台页面进行更新,然后后台页面会向内容脚本发送一条消息,以相应地更新其数据 通过Jest+Puppeter,我打算模拟不同的状态变化并测试它们。为此,以下是我的MCVE背景页面: chrome.runtime.onInstalled.addListener(函数(详细信息)){ 如果(details.reason==
chrome.runtime.onInstalled.addListener(函数(详细信息)){
如果(details.reason==“安装”){
log(“在“+新日期()安装”);
}
});
window.sendMessage=函数(){
chrome.tabs.query({},函数(tabs){
if(chrome.runtime.lastError){
log(chrome.runtime.lastError.message);
}
控制台日志(选项卡);
如果(!tabs)返回;
用于(选项卡中的常量选项卡){
如果(tab.url&&/^https:\/\/.test(tab.url)){
sendMessage(tab.id,{“message”:“hey”});
}
}
});
};
console.log(“定义的fn”+window.sendMessage)
以及下面的test.js
/**
*等待给定的毫秒
*@param{Number}毫秒等待
*/
函数睡眠(毫秒){
返回新承诺((解决)=>{
setTimeout(()=>resolve(),毫秒);
});
}
//一些随机网页
常量testURL=[
{
网址:
"https://stackoverflow.com/questions/50990292/"
+“使用八进制字符给出警告多字符字符常量”,
},
{
网址:
"https://serverfault.com/questions/971011/"
+“如何检查是否可以从ubuntu apache ph访问active directory服务器”,
},
];
const usablePages=[],
玩笑超时=60000;
/*
*添加此项,因为jest的默认超时仅为5s;加载页面可能需要更长的时间
*/
jest.setTimeout(jest\u TIMEOUT);
异步函数getBackgroundPage(){
const targets=wait browser.targets(),
backgroundPageTarget=targets.find(
target=>target.type(),
),
backgroundPage=等待backgroundPageTarget.page();
返回背景页;
}
异步函数sendMsgs(){
const bgPage=等待getBackgroundPage();
等待bgPage.evaluateHandle(`window.sendMessage();`);
}
之前(异步()=>{
for(testURL的常量testURL){
const usablePage=wait browser.newPage();
wait usablePage.setViewport({宽度:1920,高度:1080});
等待usablePage.goto(testURL.url);
}
//用于调试,所以您可以打开控制台并在15秒内签入
等待睡眠(15000);
sendMsgs();
等待睡眠(15000);
});
它(“简单测试”,函数(){
期望(2),期望(2);
});
此代码为我提供了以下运行时。lastError
:
对扩展API的访问被拒绝
我已经在我的manifest.json
中声明了[“tabs”,“”]
权限。我还可以做些什么来解决此问题
我的小丑木偶师配置:
constpathtoextension=require(“路径”).join(uu dirname,“dist”);
module.exports={
发布:{
无头:错,
args:[
`--禁用扩展,除了=${pathToExtension}`,
`--加载扩展=${pathToExtension}`,
“--单一进程”,
],
斯洛莫:250,
},
};