Skip to content

Commit

Permalink
Início da migração da automação do Abrir Emenda para lexml-eta #877
Browse files Browse the repository at this point in the history
  • Loading branch information
eurobertacs committed May 5, 2024
1 parent d6dd048 commit 869f331
Show file tree
Hide file tree
Showing 4 changed files with 375 additions and 0 deletions.
16 changes: 16 additions & 0 deletions cypress/e2e/abrir-emenda/abrir-emenda.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
describe('Abrir emenda', () => {
describe('From lexm-eta', () => {
it('Emenda padrão', () => {
cy.abrirEmenda({
fixtureEmendaJson: 'emenda_2_mpv_1179_2023.json',
pdfName: 'DOC-EMENDA-2---MPV-11792023-20230711.pdf',
postAlias: 'postAbrirEmendaPadrao',
closeModalOrientacoes: true,
});

it.only('Emenda texto livre', () => {

});
});
});
});
88 changes: 88 additions & 0 deletions cypress/fixtures/emenda_3_mpv_905_2019.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
{
"dataUltimaModificacao": "2024-05-01T18:14:40.880Z",
"aplicacao": "",
"versaoAplicacao": "",
"modoEdicao": "emenda",
"metadados": {},
"proposicao": {
"urn": "urn:lex:br:federal:medida.provisoria:2019-11-11;905",
"sigla": "MPV",
"numero": "905",
"ano": "2019",
"ementa": "Institui o Contrato de Trabalho Verde e Amarelo, altera a legislação trabalhista, e dá outras providências.\n",
"identificacaoTexto": "Texto inicial"
},
"epigrafe": {
"texto": "EMENDA Nº - CMMPV 905/2019",
"complemento": "(à MPV 905/2019)"
},
"componentes": [
{
"urn": "urn:lex:br:federal:medida.provisoria:2019-11-11;905",
"articulado": true,
"dispositivos": {
"dispositivosSuprimidos": [],
"dispositivosModificados": [
{
"tipo": "Caput",
"id": "art1_cpt",
"rotulo": "Art. 1º",
"texto": "Fica instituído o Contrato de Trabalho Verde e Amarelo, modalidade de contratação destinada à criação de novos postos de trabalho para as pessoas entre dezoito e vinte e nove anos de idade, para fins de registro do primeiro emprego em Carteira de Trabalho e Previdência Social, e para mulheres em situação de violência doméstica e familiar, conforme descrito no art. 7º da Lei nº 11.340, de 7 de agosto de 2006 (Lei Maria da Penha)."
}
],
"dispositivosAdicionados": []
}
}
],
"comandoEmendaTextoLivre": {
"texto": ""
},
"comandoEmenda": {
"comandos": [
{
"cabecalho": "Dê-se ao <i>caput</i> do art. 1º da Medida Provisória a seguinte redação:",
"citacao": "<p class=\"artigo\">“<Rotulo>Art. 1º</Rotulo> Fica instituído o Contrato de Trabalho Verde e Amarelo, modalidade de contratação destinada à criação de novos postos de trabalho para as pessoas entre dezoito e vinte e nove anos de idade, para fins de registro do primeiro emprego em Carteira de Trabalho e Previdência Social, e para mulheres em situação de violência doméstica e familiar, conforme descrito no art. 7º da Lei nº 11.340, de 7 de agosto de 2006 (Lei Maria da Penha).</p><p class=\"omissis\"><Omissis/>”</p>"
}
]
},
"anexos": [],
"justificativa": "<p class=\"align-justify\">A presente emenda visa incluir no programa governamental as mulheres vítimas de violência doméstica. A ideia é permitir que mulheres, em especial as de baixa-renda, que sofrem ou já sofreram violência possam&nbsp;ter uma chance de emprego para reduzir a sua vulnerabilidade financeira que, muitas vezes, é apontada como uma das principais circunstâncias da continuidade da violência praticada contra a mulher. </p><p class=\"align-justify\">Não há nada mais emancipatório que o trabalho e a obtenção de renda própria. Assim sendo, aumentar as vagas de trabalho para as mulheres vítimas de violência é essencial para dar uma vida digna a elas e suas famílias. Muitas mulheres tem de se deslocar em grandes distâncias, muitas vezes até mudar de cidade para se verem livres da violência familiar. Frequentemente a manutenção da rotina normal de suas vidas é um fator de empecilho à mudança, especialmente a descontinuidade do contrato de trabalho. O fantasma do desemprego assola a todos e desta forma seria um impeditivo à correta aplicação das medidas governamentais para coibir a violência doméstica e familiar contra a mulher. </p><p class=\"align-justify\">No âmbito da dependência financeira, de acordo com a Nota Técnica do Senado Federal “Violência Doméstica e Familiar Contra a Mulher”<nota-rodape class=\"nota-rodape\" contenteditable=\"false\" id-nota-rodape=\"nr1714587134483\" texto=\"&amp;lt;p&amp;gt;&amp;amp;nbsp;https://www12.senado.leg.br/institucional/datasenado/arquivos/aumenta-numero-demulheres-que-declaram-ter-sofrido-violencia&amp;lt;/p&amp;gt;\" numero=\"1\">1</nota-rodape> , de 2017, 29% das mulheres apontam que a dependência financeira em relação ao agressor é o principal motivo para permanecerem no relacionamento abusivo e em situação de violência. A nota traz ainda que 25% das mulheres em situação de violência não possuem nenhum tipo de renda própria e 33% recebem até dois salários mínimos. </p><p class=\"align-justify\">A inclusão na atividade profissional é um elemento essencial para o bem-estar psicossocial das mulheres vítimas de violência doméstica, pois melhora a sua autoestima, sua convivência social e permite a sua autonomia financeira. Considerando que a dependência econômica em relação a seus agressores faz com que muitas mulheres permaneçam em relacionamentos abusivos, convivendo com os autores da violência, resta&nbsp;claro que a criação de vagas de trabalho ou o seu direcionamento específico para elas concretiza o objetivo da Lei Maria da Penha e da Constituição Federal de 1988.</p>",
"local": "Sala da comissão",
"data": "2019-11-12",
"autoria": {
"tipo": "Parlamentar",
"imprimirPartidoUF": true,
"quantidadeAssinaturasAdicionaisSenadores": 0,
"quantidadeAssinaturasAdicionaisDeputados": 0,
"parlamentares": [
{
"identificacao": "141421",
"nome": "Eduardo da Fonte",
"sexo": "M",
"siglaPartido": "PP",
"siglaUF": "PE",
"siglaCasaLegislativa": "CD",
"cargo": ""
}
]
},
"opcoesImpressao": {
"imprimirBrasao": true,
"textoCabecalho": "",
"reduzirEspacoEntreLinhas": true,
"tamanhoFonte": 14
},
"revisoes": [],
"colegiadoApreciador": {
"siglaCasaLegislativa": "CN",
"tipoColegiado": "Comissão",
"siglaComissao": "CMMPV 905/2019"
},
"notasRodape": [
{
"id": "nr1714587134483",
"numero": 1,
"texto": "<p>&nbsp;https://www12.senado.leg.br/institucional/datasenado/arquivos/aumenta-numero-demulheres-que-declaram-ter-sofrido-violencia</p>"
}
]
}
259 changes: 259 additions & 0 deletions cypress/support/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,262 @@
// }
// }
// }

//import './../../demo/components/demoview';

const path_mpv_905_2019 = './../../demo/doc/mpv_905_2019.json';
const path_emenda_3 = './cypress/fixtures/emenda_3_mpv_905_2019.json';

Cypress.Commands.add('configurarInterceptadores', () => {
cy.readFile(path_mpv_905_2019).as('getMpv_905_2019');
});

Cypress.Commands.add('abrirEmenda', (payload: any) => {
// Mock showOpenFilePicker
cy.get('[value="Abrir"]').click();
cy.get('#fileUpload').selectFile(path_emenda_3, {force: true}).as('payload');
});


Cypress.Commands.add('checarDadosAposAbrirEmenda', (payload: any) => {
cy.fixture(payload).then(emenda => {
fnChecarTituloMpv(emenda);
fnChecarEmentaMpv(emenda);
fnChecarDadosEmendaAbaTexto(emenda);
fnChecarDadosEmendaAbaJustificativa(emenda);
fnChecarDadosEmendaAbaAutoria(emenda);
fnChecarDadosEmendaLateralComando(emenda);
fnChecarDadosNotasRodape(emenda);
});
});

const fnChecarTituloMpv = (emenda: any): void => {
const pr = emenda.proposicao;
cy.get('.nome-proposicao').contains(`${pr.sigla} ${pr.numero}/${pr.ano}`);
};

const fnChecarEmentaMpv = (emenda: any): void => {
cy.get('#texto__dispositivo2').contains(emenda.proposicao.ementa);
};

const fnChecarDadosEmendaAbaTexto = (emenda: any): void => {
// Verificar modoEdicao. Testar de acordo com o modo.
emenda.modoEdicao === 'emenda' && fnChecarDadosEmendaAbaTextoPadrao(emenda);
};

const fnChecarDadosEmendaAbaTextoPadrao = (emenda: any): void => {
// Verificar o texto do Art 1º alterado
const textoDispositivoAlterado = 'e para mulheres em situação de violência doméstica e familiar';
cy.get('texto__dispositivo6').contains(textoDispositivoAlterado);
};

// eslint-disable-next-line @typescript-eslint/no-unused-vars
const fnChecarDadosEmendaAbaJustificativa = (emenda: any): void => {
cy.get('#sl-tab-2').click();
cy.get('#editor-texto-rico-justificativa-inner > .ql-editor > :nth-child(1)')
.contains('A presente emenda visa incluir no programa governamental as mulheres');
};

// eslint-disable-next-line @typescript-eslint/no-unused-vars
const fnChecarDadosEmendaAbaAutoria = (emenda: any): void => {
// Verificar o clique na aba Destino, Data, Autoria e Impressão
cy.get('#sl-tab-3').click();

// Verificar a seleção do tipo Órgão destino
cy.get('lexml-destino')
.shadow()
.find('fieldset.lexml-destino')
.find('div')
.find('sl-radio-group#tipoColegiado')
.find('sl-radio')
.contains('Comissão');

// Verificar o preenchimento do nome do Órgão destino
cy.get('lexml-destino')
.shadow()
.find('fieldset.lexml-destino')
.find('div')
.find('autocomplete-async#auto-complete-async')
.shadow()
.find('slot#dropdown-input')
.find('sl-input#defaultInput.lexml-autocomplete-input')
.shadow()
.find('div.form-control.form-control--medium.form-control--has-label')
.find('div.form-control-input')
.find('div.input.input--medium.input--standard.input--disabled')
.find('input#input.input__control');

// Verificar a seleção do radio Data e o preenchimento do valor
cy.get('lexml-data').shadow().find('div.lexml-data').find('sl-radio-group')
.find('sl-radio').shadow().find('label.radio.radio--checked');

cy.get('lexml-data')
.shadow()
.find('div.lexml-data')
.find('sl-radio-group')
.find('sl-radio')
.find('sl-input#input-data')
.shadow()
.find('div.form-control.form-control--medium.form-control--has-label')
.find('div.form-control-input')
.find('div.input.input--medium.input--standard.input')
.find('input#input.input__control');

// Verificar o preenchimento dos campos da seção Autoria
// Verificar o preenchimento do campo Parlamentar
cy.get('lexml-autoria')
.shadow()
.find('sl-radio-group.lexml-autoria')
.find('div.autoria-list')
.find('div.autoria-grid')
.find('div.autoria-grid--col1')
.find('lexml-autocomplete.lexml-autocomplete')
.shadow()
.find('slot#dropdown-input')
.find('sl-input#defaultInput.lexml-autocomplete-input')
.shadow()
.find('div.form-control.form-control--small')
.find('div.form-control-input')
.find('div.input.input--small.input--standard')
.find('input#input.input__control');

// Verificar o preenchimento do campo Cargo
cy.get('lexml-autoria')
.shadow()
.find('sl-radio-group.lexml-autoria')
.find('div.autoria-list')
.find('div.autoria-grid')
.find('div.autoria-grid--col2')
.find('sl-input#tex-cargo.autoria-input')
.shadow()
.find('div.form-control.form-control--small')
.find('div.form-control-input')
.find('div.input.input--small.input--standard.input--empty')
.find('input#input.input__control');

// Verificar o preenchimento do campo Quantidade de assinaturas adicionais de Senadores
cy.get('lexml-autoria')
.shadow()
.find('sl-radio-group.lexml-autoria')
.find('div.assinaturas-adicionais')
.find('sl-input#num-assinaturas-adicionais-senadores.autoria-input')
.shadow()
.find('div.form-control.form-control--small.form-control--has-label')
.find('div.form-control-input')
.find('div.input.input--small.input--standard.input')
.find('input#input.input__control');

// Verificar o preenchimento do campo Quantidade de assinaturas adicionais de Deputados Federais
cy.get('lexml-autoria')
.shadow()
.find('sl-radio-group.lexml-autoria')
.find('div.assinaturas-adicionais')
.find('sl-input#num-assinaturas-adicionais-deputados.autoria-input')
.shadow()
.find('div.form-control.form-control--small.form-control--has-label')
.find('div.form-control-input')
.find('div.input.input--small.input--standard.input')
.find('input#input.input__control');

// Verificar o checkbox de imprimir partido e UF para os signatários
cy.get('lexml-autoria')
.shadow()
.find('sl-radio-group.lexml-autoria')
.find('div.assinaturas-adicionais')
.find('label')
.find('input#chk-exibir-partido-uf');

// Verificar o preenchimento dos campos da seção Opções de impressão
// Verificar o preenchimento do checkbox Opções de impressão
cy.get('lexml-opcoes-impressao')
.shadow()
.find('sl-radio-group.lexml-opcoes-impressao')
.find('div')
.find('sl-checkbox#chk-imprimir-brasao')
.shadow()
.find('label.checkbox.checkbox--checked')
.find('span.checkbox__control');

// Verificar a seleção do campo tamanho da letra
cy.get('lexml-opcoes-impressao')
.shadow()
.find('sl-radio-group.lexml-opcoes-impressao')
.find('div')
.find('sl-select#select-tamanho-fonte')
.shadow()
.find('div.form-control.form-control--small.form-control--has-label')
.find('div.form-control-input')
.find('sl-dropdown.select.select--standard.select--small');

// Verificar a seleção de imprimir brasão
cy.get('lexml-opcoes-impressao')
.shadow()
.find('sl-radio-group.lexml-opcoes-impressao')
.find('div')
.find('sl-checkbox#chk-imprimir-brasao')
.shadow()
.find('label.checkbox.checkbox--checked')
.find('span.checkbox__control');


// Verificar a seleção de reduzir espaçamento entre linhas
cy.get('lexml-opcoes-impressao')
.shadow()
.find('sl-radio-group.lexml-opcoes-impressao')
.find('div')
.find('sl-checkbox#chk-reduzir-espaco')
.shadow()
.find('label.checkbox.checkbox--checked')
.find('span.checkbox__control');
};

const fnChecarDadosEmendaLateralComando = (emenda: any): void => {
fnChecarComandoCabecalho(emenda);
fnChecarComandoCitacao(emenda);
};

const fnChecarComandoCabecalho = (emenda: any): void => {
const cabecalho = emenda.comandoEmenda.comandos[0].cabecalho;
cy.get('lexml-emenda-comando').shadow()
.find('div.lexml-emenda-comando')
.find('div.lexml-emenda-cabecalhoComando').contains(cabecalho);
};

const fnChecarComandoCitacao = (emenda: any): void => {
const citacao = emenda.comandoEmenda.comandos[0].citacao;
cy.get('edt-app lexml-emenda-comando')
.shadow()
.find('div.lexml-emenda-comando')
.find('div.lexml-emenda-citacaoComando')
.then(div => {
const aux = citacao
.replace(/<\/?[^>]*>?/g, '')
.replaceAll(/\s+/g, ' ')
.trim();
const innerHTML = div[0].innerHTML
.replace(/<\/?[^>]*>?/g, '')
.replace(/\s+/g, ' ')
.replace('...............................................', '')
.trim();
expect(innerHTML).equal(aux);
});
};


const fnChecarDadosNotasRodape = (emenda: any): void => {
const textoNotaRodape = emenda.componentes[0].notas.rodapé;
cy.get('#sl-tab-14 > #badgeAtalhos').click();
cy.get('.notas-texto > p').contains(textoNotaRodape);
};


declare global {
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace Cypress {
interface Chainable {
configurarInterceptadores(): Chainable<void>;
abrirEmenda(payload: any): Chainable<void>;
checarDadosAposAbrirEmenda(payload: any): Chainable<void>;
}
}
}
12 changes: 12 additions & 0 deletions cypress/support/e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,15 @@ import './commands';

// Alternatively you can use CommonJS syntax:
// require('./commands')

beforeEach(() => {
// ver commands.ts
cy.viewport(1920, 1080);
cy.visit('/', {
onBeforeLoad: win => {
win.sessionStorage.clear();
win.localStorage.clear();
cy.spy(win.console, 'error').as('consoleError');
},
});
});

0 comments on commit 869f331

Please sign in to comment.