totvs / tir

This module is used to create and execute test suites and test cases for web interfaces.
MIT License
84 stars 49 forks source link

Como usar o TIR em Docker Windows Desktop #1441

Closed carloseniemeyer closed 1 week ago

carloseniemeyer commented 3 weeks ago

Na execução do TIR via Docker foi informado esse comando na documentação:

docker run --rm -ti 
-v ${PWD}:/local 
-v /etc/passwd:/etc/passwd 
-v /etc/groups:/etc/groups 
-e DISPLAY=:0 
-u $(id -u):$(id -g) 
totvsengpro/tir:latest python3 /local/ATFA036TESTSUITE.py

https://totvs.github.io/tir-docs/TIR/execdocker/

Entretanto isso se aplica ao Ambiente Linux, visto que os comandos de Hosts se referem às pastas do host linux.

Qual seria os comandos para execução via Docker Desktop em Windows com WSL?

Nota: Isso seria muito útil visto que muitos Devs Protheus que desejam usar o TIR usam a plataforma Windows.

carloseniemeyer commented 3 weeks ago

Após a criação do Container com um volume mapeado no Windows pelo Docker Desktop no Windows.

Executei o comando: docker run --rm -ti -v C:\TOTVS\DOCKER\TIR\local:/local totvsengpro/tir:latest python3 /local/MATA030TESTSUITE.py

Entretanto, recebo o erro:

2024-07-01 19:05:17,033-INFO:: TIR Version: 1.20.20 2024-07-01 19:05:17,034-INFO:: Starting the browser 2024-07-01 19:05:18,258-WARNING:: Warning log_error Wasn't possible execute Start() method: Message: invalid argument: can't kill an exited process

====================================================================== ERROR: setUpClass (MATA030TESTCASE.MATA030)

Traceback (most recent call last): File "/local/MATA030TESTCASE.py", line 9, in setUpClass inst.oHelper = Webapp() File "/usr/local/lib/python3.7/site-packages/tir/main.py", line 24, in init self.webapp = WebappInternal(config_path, autostart) File "/usr/local/lib/python3.7/site-packages/tir/technologies/webapp_internal.py", line 127, in init__ self.log_error(message) File "/usr/local/lib/python3.7/site-packages/tir/technologies/webapp_internal.py", line 7905, in log_error self.assertTrue(False, log_message) File "/usr/local/lib/python3.7/unittest/case.py", line 705, in assertTrue raise self.failureException(msg) AssertionError: False is not true : setUpClass - Wasn't possible execute Start() method: Message: invalid argument: can't kill an exited process

Inspecionando o Docker verifiquei as seguintes informações de ambiente:

        "PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
        "LANG=C.UTF-8",
        "GPG_KEY=0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D",
        "PYTHON_VERSION=3.7.17",
        "PYTHON_PIP_VERSION=23.0.1",
        "PYTHON_SETUPTOOLS_VERSION=57.5.0",
        "PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/9af82b715db434abb94a0a6f3569f43e72157346/public/get-pip.py",
        "PYTHON_GET_PIP_SHA256=45a2bb8bf2bb5eff16fdd00faef6f29731831c7c59bd9fc2bf1f3bed511ff1fe",
        "DEBIAN_FRONTEND=noninteractive"

Aqui dentro do Docker cita a versão 3.7.17 do Python. https://www.python.org/downloads/release/python-3717/

Mas me parece que o problema do Docker pode também ter relação com o WebDriver.

Alguma sugestão?

renanllisboa commented 3 weeks ago

Este erro ocorre quando utilizamos a opcao "Headless": false no arquivo config.json. image

renanllisboa commented 3 weeks ago

Mudando a opção para "Headless": true no arquivo config.json. A execução não apresenta problemas. Atualmente temos suporte somente para execução com esta opção em Docker. image

image

renanllisboa commented 3 weeks ago

Quanta a versão do python na imagem vamos ajustar para a versão 3.7.9.

carloseniemeyer commented 3 weeks ago

@renanllisboa Boa Tarde!

Infelizmente aqui no meu teste não tive êxito. Erro Retornado: WARNING:: Warning log_error Wasn't possible execute Start() method: Message: invalid argument: can't kill an exited process O que pode estar incorreto?

Segue minha configuração do config.json utilizada: { "Url": "http://localhost:8089", "Browser": "Firefox", "Environment": "WORK_NIEMEYER_ORACLE_DEV1", "Language": "pt-br", "User": "carlos.niemeyer", "Password": "teste123", "Headless": true, "DebugLog": false, "POUILogin": false, "ScreenshotFolder": "C:\TOTVS\DOCKER\TIR\basic_template\Log", "ScreenShot": false, "NewLog": true }

Comando Executado (Versão para Windows): docker run --rm -ti -v C:\TOTVS\DOCKER\TIR\local:/local totvsengpro/tir:latest python3 /local/MATA030TESTSUITE.py

Erro Retornado: 2024-07-05 17:05:41,626-INFO:: TIR Version: 1.20.20 2024-07-05 17:05:41,627-INFO:: Starting the browser 2024-07-05 17:05:42,752-WARNING:: Warning log_error Wasn't possible execute Start() method: Message: invalid argument: can't kill an exited process

ERROR

====================================================================== ERROR: setUpClass (MATA030TESTCASE.MATA030)

Traceback (most recent call last): File "/local/MATA030TESTCASE.py", line 9, in setUpClass inst.oHelper = Webapp() File "/usr/local/lib/python3.7/site-packages/tir/main.py", line 24, in init
self.webapp = WebappInternal(config_path, autostart) File "/usr/local/lib/python3.7/site-packages/tir/technologies/webapp_internal.py", line 127, in init__ self.log_error(message) File "/usr/local/lib/python3.7/site-packages/tir/technologies/webapp_internal.py", line 7905, in log_error self.assertTrue(False, log_message) File "/usr/local/lib/python3.7/unittest/case.py", line 705, in assertTrue raise self.failureException(msg) AssertionError: False is not true : setUpClass - Wasn't possible execute Start() method: Message: invalid argument: can't kill an exited process


Ran 0 tests in 1.195s

FAILED (errors=1) PS C:\TOTVS\DOCKER\TIR> docker run --rm -ti -v C:\TOTVS\DOCKER\TIR\local:/local totvsengpro/tir:latest python3 /local/MATA030TESTSUITE.py 2024-07-05 17:05:51,741-INFO:: TIR Version: 1.20.20 2024-07-05 17:05:51,741-INFO:: Starting the browser 2024-07-05 17:05:52,856-WARNING:: Warning log_error Wasn't possible execute Start() method: Message: invalid argument: can't kill an exited process

ERROR

====================================================================== ERROR: setUpClass (MATA030TESTCASE.MATA030)

Traceback (most recent call last): File "/local/MATA030TESTCASE.py", line 9, in setUpClass inst.oHelper = Webapp() File "/usr/local/lib/python3.7/site-packages/tir/main.py", line 24, in init
self.webapp = WebappInternal(config_path, autostart) File "/usr/local/lib/python3.7/site-packages/tir/technologies/webapp_internal.py", line 127, in init__ self.log_error(message) File "/usr/local/lib/python3.7/site-packages/tir/technologies/webapp_internal.py", line 7905, in log_error self.assertTrue(False, log_message) File "/usr/local/lib/python3.7/unittest/case.py", line 705, in assertTrue raise self.failureException(msg) AssertionError: False is not true : setUpClass - Wasn't possible execute Start() method: Message: invalid argument: can't kill an exited process


Ran 0 tests in 1.184s

FAILED (errors=1)

renanllisboa commented 1 week ago

Vou encerrar a Issue pois não existe nenhum problema genérico na forma de utilizar o Docker com Wsl no Windows. Deve ser algo pontual no seu ambiente. Caso queira entrar em detalhe, pode me chamar diretamente pelo Gitter.

Atenciosamente