备份现场结果补录、图片修复与跳过文章功能
This commit is contained in:
1 parent
1e6504b4a2
commit
d157c179c8
20 files changed
+597
-47
No files matched your search
@@ -11,3 +11,26 @@ test('终止后较早的 heartbeat 响应不能恢复流程',async()=>{
|
||||
assert.equal(responses.find(r=>r.id==='old').value.running,false);assert.equal(values.halted,true);
|
||||
requests[1].onload({status:200,responseText:JSON.stringify({running:false,epoch:2})});await stop;
|
||||
});
|
||||
|
||||
test('悬浮窗跳过按钮发送页面事件并防止忙碌时重复点击',()=>{
|
||||
const handlers=new Map(),elements=new Map(),emitted=[],requests=[];
|
||||
const element=()=>({style:{},before(child){elements.set(child.id,child);}});
|
||||
for(const id of ['halt','port','token','save','status'])elements.set(id,element());
|
||||
const doc={readyState:'complete',body:{append(){}},getElementById:()=>null,
|
||||
createElement:()=>({...element(),attachShadow:()=>({set innerHTML(value){},getElementById:id=>elements.get(id)})}),
|
||||
addEventListener(type,fn){if(!handlers.has(type))handlers.set(type,[]);handlers.get(type).push(fn);},
|
||||
dispatchEvent(event){emitted.push(event);for(const fn of handlers.get(event.type)||[])fn(event);}
|
||||
};
|
||||
class Event{constructor(type,options={}){this.type=type;this.detail=options.detail;}}
|
||||
vm.runInNewContext(fs.readFileSync(path.join(__dirname,'../browser/local-bridge.user.js'),'utf8'),{
|
||||
document:doc,CustomEvent:Event,GM_getValue:(k,d)=>k==='pairToken'?'test-token':k==='halted'?false:d,
|
||||
GM_setValue:()=>{},GM_addValueChangeListener:()=>{},GM_xmlhttpRequest:r=>requests.push(r)
|
||||
});
|
||||
const skip=elements.get('skip');assert.equal(skip.textContent,'跳过本文章');skip.onclick();
|
||||
assert.equal(emitted.at(-1).type,'dww11:skip-article');
|
||||
doc.dispatchEvent(new Event('dww11:skip-busy',{detail:true}));assert.equal(skip.disabled,true);
|
||||
doc.dispatchEvent(new Event('dww11:skip-busy',{detail:false}));assert.equal(skip.disabled,false);
|
||||
doc.dispatchEvent(new Event('dww11:local-request',{detail:JSON.stringify({id:'skip-test',route:'skip',body:{id:'job'}})}));
|
||||
assert.equal(requests[0].url,'http://127.0.0.1:8770/bridge/skip');
|
||||
requests[0].onload({status:200,responseText:'{"ok":true}'});
|
||||
});
|
||||
Reference in new issue
Block a user