Skip to content

Refactor click tree logic and add unit tests for functionality#1907

Merged
HelenaAdrignoli merged 2 commits intorelease/v2.7.0rc1from
hotfix/ClickTree_refactory
Apr 14, 2026
Merged

Refactor click tree logic and add unit tests for functionality#1907
HelenaAdrignoli merged 2 commits intorelease/v2.7.0rc1from
hotfix/ClickTree_refactory

Conversation

@vinioliveira-totvs
Copy link
Copy Markdown
Collaborator

@vinioliveira-totvs vinioliveira-totvs commented Apr 9, 2026

Descrição

Correções e melhorias na função ClickTree, identificadas a partir do relato de erro na task #CA-11721 (Ryver).


Problemas Corrigidos

Erro ao usar nós com nomes idênticos no caminho da árvore

O usuário reportou um erro ao utilizar dois segmentos iguais no parâmetro da função:

ClickTree("CT002 PMSA130 DOCUMENTOS > CT002 PMSA130 DOCUMENTOS")

A causa era o filtro de hierarquia na seleção dos nós da árvore, que só era aplicado quando self.webapp_shadowroot() retornava False. Como atualmente essa função sempre retorna True, o filtro nunca era executado, causando falha na navegação de nós com nomes repetidos.

Condição incorreta no loop de right_click

A condição de saída do while que aguarda a abertura do menu de contexto estava invertida. O loop continuava enquanto o z-index do novo elemento fosse menor que o anterior, quando o comportamento esperado é o oposto — o popup aberto pelo clique direito possui z-index maior que os demais elementos.

Além disso, como a condição nunca era satisfeita durante a execução normal, o loop sempre aguardava até o timeout completo (config.timeout / 3) antes de prosseguir. Considerando que o timeout padrão do SmartTest é de 360 segundos, isso representava uma espera desnecessária de aproximadamente 120 segundos a cada chamada de ClickTree com right_click=True.

Em alguns cenários, o popup também pode não ser o elemento de maior z-index, o que tornava a condição de saída ainda mais insuficiente.


Alterações Realizadas

# Tipo Descrição
1 Fix Corrigido o filtro de hierarquia para funcionar corretamente com nós de mesmo nome
2 Refactor Removidos blocos de código destinados ao fluxo non-shadow root, que nunca eram executados
3 Fix Corrigido o operador da condição do while no fluxo de right_click (<=>=)
4 Improvement Adicionada validação secundária check_popup() para encerrar o loop quando o popup já estiver visível na tela, independentemente do z-index
5 Refactor Remoção de redundâncias e linhas desnecessárias para limpeza geral do código
6 Test Criados testes unitários para a função ClickTree

Impacto no Tempo de Execução

Com a correção da condição do right_click, o loop agora encerra assim que o menu de contexto é detectado, eliminando a espera desnecessária pelo timeout completo (config.timeout / 3 ≈ 87s). Isso representa uma economia significativa de tempo em qualquer suite que utilize ClickTree com right_click=True.


Rotinas Testadas

  • PMSA130
  • CNTA240
  • CTBA161
  • PCOXPNJ

Testes Unitários

Foram criados testes unitários para a função ClickTree, sendo este o primeiro método do TIR a contar com cobertura de testes unitários. A iniciativa tem como objetivo garantir que futuras alterações no código sejam validadas automaticamente, permitindo a identificação de regressões antes que cheguem ao ambiente de execução.

Essa abordagem serve de base para que os demais métodos do TIR também passem a ter testes unitários ao longo do tempo.


Comportamento Esperado Após o Fix

  • ClickTree com nós de mesmo nome no caminho resolve corretamente a hierarquia.
  • O loop de tentativas do right_click encerra assim que qualquer sinal de sucesso for detectado: aumento de z-index ou presença do popup na tela.

@HelenaAdrignoli HelenaAdrignoli merged commit c74adcc into release/v2.7.0rc1 Apr 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants