From c7e3c1236e329e2f83410a1786be15bb4911ce2b Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Thu, 29 Feb 2024 18:30:36 -0300 Subject: [PATCH] feat: adicionar teste automatizado para SEI3 --- .../PaginaCadastrarProcessoEmBloco.php | 238 ++++++++++++++++++ .../src/paginas/PaginaTramiteEmBloco.php | 80 ++++++ .../funcional/tests/CenarioBaseTestCase.php | 4 + .../tests/TramiteBlocoExternoCadastroTest.php | 76 ++++++ ...coExternoProcessoJaIncluidoEmBlocoTest.php | 144 +++++++++++ .../tests/TramiteBlocoExternoTest.php | 45 ++++ .../funcional/tests/CenarioBaseTestCase.php | 1 + .../PaginaCadastrarProcessoEmBloco.php | 5 - 8 files changed, 588 insertions(+), 5 deletions(-) create mode 100644 tests_sei3/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaTramiteEmBloco.php create mode 100644 tests_sei3/funcional/tests/TramiteBlocoExternoCadastroTest.php create mode 100644 tests_sei3/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php create mode 100644 tests_sei3/funcional/tests/TramiteBlocoExternoTest.php diff --git a/tests_sei3/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php b/tests_sei3/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php new file mode 100644 index 000000000..1f980863f --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -0,0 +1,238 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=md_pen_tramita_em_bloco')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem) + { + $this->selectRepositorio($estrutura); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @return string + */ + private function selectRepositorio($siglaRepositorio) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade'); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + if(!empty($hierarquia)){ + $nomeUnidade .= ' - ' . $hierarquia; + } + + try{ + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + }catch(Exception $e){ + } + $testCase->byPartialLinkText($nomeUnidade)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + return $this->unidadeInput->value(); + } + + public function novoBlocoDeTramite() + { + $this->test->byId("bntNovo")->click(); + } + + + public function criarNovoBloco() + { + $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); + } + + public function editarBlocoDeTramite($descricao = null) + { + $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); + + if ($descricao != null) { + $this->test->byId('txtDescricao')->clear(); + $this->test->byId('txtDescricao')->value($descricao); + } + } + + public function selecionarExcluirBloco() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) + { + // Preencher parâmetros do trâmite + $this->selectRepositorio($repositorio); + $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); + $this->btnEnviar(); + + if ($callbackEnvio == null) { + $mensagemAlerta = null; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if ($mensagemAlerta) { + throw new Exception($mensagemAlerta); + } + } + + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + + if (isset($mensagemAlerta)) { + throw new Exception($mensagemAlerta); + } + + $callbackEnvio = $callbackEnvio ?: function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + }; + + try { + $this->test->waitUntil($callbackEnvio, $timeout); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + sleep(1); + } + + public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) + { + $strProtocoloTeste = $processoTeste['PROTOCOLO']; + + $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + print_r(count($listaDocumentos)); + + sleep(5); + + die('aki'); + } + + public function retornarTextoColunaDaTabelaDeBlocos() + { + $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); + $terceiraColuna = $tabela->byXPath('./td[3]'); + + return $terceiraColuna->text(); + } + + public function retornarQuantidadeDeProcessosNoBloco() + { + // Localiza todas as linhas da tabela com o XPath + $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + // Obtém o número de linhas + return count($linhasDaTabela); + } + + + public function bntTramitarBloco() + { + $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); + } + + public function bntVisualizarProcessos() + { + $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); + } + + public function btnSalvar() + { + $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); + $buttonElement->click(); + } + + public function btnEnviar() + { + $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); + $buttonElement->click(); + } + +} \ No newline at end of file diff --git a/tests_sei3/funcional/src/paginas/PaginaTramiteEmBloco.php b/tests_sei3/funcional/src/paginas/PaginaTramiteEmBloco.php new file mode 100644 index 000000000..588d53113 --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaTramiteEmBloco.php @@ -0,0 +1,80 @@ +test->byCssSelector('input[title="' . $numProtocolo . '"]'); + $checkbox->click(); + } + } + + /** + * Selecionar tramite em bloco + * @return void + */ + public function selecionarTramiteEmBloco() + { + $btnTramiteEmBloco = $this->test->byXPath( + "//img[@alt='". utf8_encode("Incluir Processos no Bloco de Trâmite") ."']" + ); + $btnTramiteEmBloco->click(); + } + + /** + * Selecionar bloco + * @param string $selAndamento + * @return void + */ + public function selecionarBloco() + { + $select = $this->test->select($this->test->byId('selBlocos')); + $select->selectOptionByValue(); + } + + /** + * Clicar em salvar + * @return void + */ + public function clicarSalvar() + { + $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); + $btnSalvar->click(); + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $bolExisteAlerta; + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/tests/CenarioBaseTestCase.php b/tests_sei3/funcional/tests/CenarioBaseTestCase.php index 235f37a86..d28aef4bc 100755 --- a/tests_sei3/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei3/funcional/tests/CenarioBaseTestCase.php @@ -44,6 +44,8 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaTramiteMapeamentoOrgaoExterno = null; protected $paginaExportarTiposProcesso = null; protected $paginaTipoProcessoReativar = null; + protected $paginaCadastrarProcessoEmBloco = null; + protected $paginaTramiteEmBloco = null; public function setUpPage(): void { @@ -66,6 +68,8 @@ public function setUpPage(): void $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); + $this->paginaCadastrarProcessoEmBloco = new PaginaCadastrarProcessoEmBloco($this); + $this->paginaTramiteEmBloco = new PaginaTramiteEmBloco($this); $this->currentWindow()->maximize(); } diff --git a/tests_sei3/funcional/tests/TramiteBlocoExternoCadastroTest.php b/tests_sei3/funcional/tests/TramiteBlocoExternoCadastroTest.php new file mode 100644 index 000000000..99b723389 --- /dev/null +++ b/tests_sei3/funcional/tests/TramiteBlocoExternoCadastroTest.php @@ -0,0 +1,76 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'] + ]); + $penMapUnidadesFixture->gravar(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->novoBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->criarNovoBloco(); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Bloco de Trâmite externo criado com sucesso!'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } + + /** + * Teste para editar bloco de trâmite externo já criado + * + * @return void + */ + public function test_editar_bloco_de_tramite() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->editarBlocoDeTramite('Bloco editado para teste automatizado'); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Bloco de trâmite externo alterado com sucesso!'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php b/tests_sei3/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php new file mode 100644 index 000000000..aab957f59 --- /dev/null +++ b/tests_sei3/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php @@ -0,0 +1,144 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + } + + /** + * Teste de inclusão de processo em bloco + * @return void + */ + public function teste_incluir_processo_em_bloco() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->cadastrarBlocoDeTramite(); + $this->paginaBase->navegarParaControleProcesso(); + $this->cadastrarProcessos(); + + $this->paginaBase->navegarParaControleProcesso(); + // $this->paginaTramiteEmBloco->selecionarProcessos([self::$protocoloTeste]); + $this->paginaTramiteEmBloco->selecionarProcessos(self::$protocoloTeste); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + utf8_encode('Processo(s) incluído(s) com sucesso no bloco'), + $mensagem + ); + + // $this->paginaBase->sairSistema(); + } + + /** + * Teste de inclusão do mesmo processo em bloco + * @return void + */ + public function teste_mesmo_processo_em_bloco() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + // $this->paginaTramiteEmBloco->selecionarProcessos([self::$protocoloTeste]); + $this->paginaTramiteEmBloco->selecionarProcessos(self::$protocoloTeste); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + utf8_encode('Prezado(a) usuário(a), o processo ' . self::$protocoloTeste + . ' encontra-se inserido no bloco de número '), + $mensagem + ); + + $this->paginaBase->sairSistema(); + + // $this->paginaBase->navegarParaControleProcesso(); + // $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + // $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + // $this->paginaTramiteEmBloco->clicarSalvar(); + // sleep(2); + // $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + // $this->assertStringContainsString( + // utf8_encode( + // 'Prezado(a) usuário(a), o processo ' . $this->objProtocoloDTO->getStrProtocoloFormatado() + // . ' encontra-se inserido no bloco de número ' . $this->objBlocoDeTramiteDTO->getNumId() . '.' + // . ' Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' + // ), + // $mensagem + // ); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarBlocoDeTramite() + { + + // Configuração do dados para teste do cenário + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->novoBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->criarNovoBloco(); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Bloco de Trâmite externo criado com sucesso!'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarProcessos() + { + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/tests/TramiteBlocoExternoTest.php b/tests_sei3/funcional/tests/TramiteBlocoExternoTest.php new file mode 100644 index 000000000..9a8f3123a --- /dev/null +++ b/tests_sei3/funcional/tests/TramiteBlocoExternoTest.php @@ -0,0 +1,45 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'] + ]); + $penMapUnidadesFixture->gravar(); + + } + + public function teste_tramite_bloco_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + ); + sleep(10); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/CenarioBaseTestCase.php b/tests_sei4/funcional/tests/CenarioBaseTestCase.php index 1b5362894..b2ba78a92 100755 --- a/tests_sei4/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei4/funcional/tests/CenarioBaseTestCase.php @@ -526,6 +526,7 @@ protected function validarDadosDocumento($nomeDocArvore, $dadosDocumento, $desti protected function validarProcessosTramitados($protocolo, $deveExistir) { $this->frame(null); + $this->paginaBase->navegarParaControleProcesso(); $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados Externamente')); $this->byLinkText("Processos Tramitados Externamente")->click(); $this->assertEquals($deveExistir, $this->paginaProcessosTramitadosExternamente->contemProcesso($protocolo)); diff --git a/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php b/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php index e7a289ad2..370651c83 100644 --- a/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php +++ b/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -185,11 +185,6 @@ public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTest }, PEN_WAIT_TIMEOUT); $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - print_r(count($listaDocumentos)); - - sleep(5); - - die('aki'); } public function retornarTextoColunaDaTabelaDeBlocos()