9 lines
2.3 KiB
JavaScript
9 lines
2.3 KiB
JavaScript
const {start,DIR,path,assert,sanitized}=require('./portal-visual-qa-lib.cjs');
|
|
(async()=>{const q=await start('simulator-loading-chromium-20261010');let page,ctx,release;
|
|
try{({page,ctx}=await q.context('investor18',390));await q.login(page,'investor18');const e=require(path.join(DIR,'investor-ab-chromium-20261010.json')).scenarios.B;
|
|
const gate=new Promise(resolve=>{release=resolve;});let reached;const incoming=new Promise(resolve=>{reached=resolve;});
|
|
await q.open(page,'/investimentos/'+e.id);await page.route(url=>url.pathname==='/api/v1/simulation-drafts/current',async route=>{q.proof.requested_context=new URL(route.request().url()).searchParams.get('context');reached();await gate;await route.continue();});
|
|
await page.getByRole('link',{name:'Plano e simulador',exact:true}).click();await Promise.race([incoming,new Promise((_,reject)=>setTimeout(()=>reject(Error('Draft recovery request was not intercepted')),20000))]);assert.equal(q.proof.requested_context,e.id);await page.getByText('A recuperar o rascunho. Aguarde para editar.',{exact:true}).waitFor();const nav=page.getByRole('navigation',{name:'Etapas do formulário'});assert(await nav.getByRole('button',{name:/Estrutura financeira/}).isDisabled());assert(await page.getByRole('combobox').first().isDisabled());q.proof.checks.controls_disabled_until_recovery=true;
|
|
release();await page.getByText('Dossier privado recuperado da sua conta.',{exact:true}).waitFor();assert(!(await nav.getByRole('button',{name:/Estrutura financeira/}).isDisabled()));await nav.getByRole('button',{name:/Projecto ou negócio/}).click();assert.equal(await page.getByLabel('Título do projecto',{exact:true}).inputValue(),'Plano financeiro B QA');await nav.getByRole('button',{name:/Estrutura financeira/}).click();await page.getByRole('region',{name:'Ferramentas de planeamento financeiro'}).waitFor();q.proof.checks.restored_values_usable_after_delay=true;await q.shot(page,'loaded-mobile-tool');await q.logout(page);await ctx.close();q.proof.result='passed';
|
|
}catch(e){if(release)release();q.proof.result='failed';q.proof.error=sanitized(e);}finally{q.proof.finished_at=new Date().toISOString();q.save();await q.browser.close();console.log(JSON.stringify({result:q.proof.result,checks:q.proof.checks,receipt:q.receipt}));if(q.proof.result!=='passed')process.exitCode=1;}})();
|