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});