ufutx_love_mp/tools/local-acceptance/devtools-membership.test.cjs

35 lines
3.4 KiB
JavaScript

const path=require('path'),assert=require('assert');
const root=path.resolve(__dirname,'../../../.local-acceptance');
const auto=require(path.join(root,'automation/node_modules/miniprogram-automator'));
const timer=setTimeout(()=>{console.error('Timeout');process.exit(2)},55000);
(async()=>{const mp=await auto.connect({wsEndpoint:'ws://127.0.0.1:19420'});try{
await mp.evaluate(()=>{wx.__acceptanceMessages=[];if(!wx.__savedToast)wx.__savedToast=wx.showToast;if(!wx.__savedModal)wx.__savedModal=wx.showModal;wx.showToast=function(o){wx.__acceptanceMessages.push(o.title);return undefined};wx.showModal=function(o){wx.__acceptanceMessages.push(o.content);if(o.success)o.success({confirm:true,cancel:false})}});
let p=await mp.navigateTo('/pages/users/upgradeVIP');await p.waitFor(1200);
assert.strictEqual(await p.data('purchaseEnabled'),false);await (await p.$('.payBtn')).tap();await p.waitFor(250);
await mp.screenshot({path:path.join(root,'logs/membership-closed-click.png')});
await mp.evaluate(()=>{const u=wx.getStorageSync('userInfo')||{};wx.removeStorageSync('virtual-member-order:'+(u.id||u.user_id||'anonymous'))});
await (await p.$('.recent-member-order')).tap();await p.waitFor(250);
await mp.screenshot({path:path.join(root,'logs/order-empty.png')});
for(const state of ['PENDING','FULFILLED']){
await mp.evaluate(s=>{const u=wx.getStorageSync('userInfo')||{};wx.setStorageSync('virtual-member-order:'+(u.id||u.user_id||'anonymous'),'LOCAL-ACCEPTANCE-'+s)},state);
await (await p.$('.recent-member-order')).tap();await p.waitFor(500);
const stored=await mp.evaluate(()=>{const u=wx.getStorageSync('userInfo')||{};return wx.getStorageSync('virtual-member-order:'+(u.id||u.user_id||'anonymous'))});
assert.equal(!!stored,state==='PENDING');
}
await mp.evaluate(()=>{const u=wx.getStorageSync('userInfo')||{};wx.setStorageSync('virtual-member-order:'+(u.id||u.user_id||'anonymous'),'LOCAL-ACCEPTANCE-UNKNOWN')});
await (await p.$('.recent-member-order')).tap();await p.waitFor(500);
await mp.evaluate(()=>{const u=wx.getStorageSync('userInfo')||{};wx.removeStorageSync('virtual-member-order:'+(u.id||u.user_id||'anonymous'))});
p=await mp.navigateTo('/pages/users/upgradeVIP2');await p.waitFor(1000);
assert.equal((await p.data('rankList')).length,0);assert.match(await p.data('specialVIP.discount_desc'),/暂无/);
const b=await p.$('.payBtn');assert(b,'Single-service closed button missing');await b.tap();await p.waitFor(250);
await mp.screenshot({path:path.join(root,'logs/single-service-closed.png')});
await mp.evaluate(()=>wx.__loveAcceptance.scenario('failure',true));
const failed=await mp.navigateTo('/pages/users/upgradeVIP2');await failed.waitFor(800);
assert.match(await failed.data('specialVIP.discount_desc'),/加载失败/);
await mp.evaluate(()=>wx.__loveAcceptance.scenario('failure',false));
await mp.navigateBack();
const messages=await mp.evaluate(()=>wx.__acceptanceMessages);
for(const expected of ['会员购买暂不可用','暂无待查询订单','支付结果仍在确认中','会员权益已到账','单项服务暂不可购买'])assert(messages.some(s=>s.includes(expected)),expected);
console.log(JSON.stringify({passed:true,messages:[...new Set(messages)]}));
}finally{await mp.evaluate(()=>{wx.__loveAcceptance.scenario('failure',false);if(wx.__savedToast)wx.showToast=wx.__savedToast;if(wx.__savedModal)wx.showModal=wx.__savedModal});await mp.disconnect();clearTimeout(timer)}})().catch(e=>{console.error(e.message);clearTimeout(timer);process.exitCode=1});