squash-orchestrator

alexandreR
Messages : 8
Inscription : lun. avr. 08, 2024 4:30 pm

squash-orchestrator

Message par alexandreR »

Bonjour,

J'aimerais utiliser Squash afin de gérer mes tests manuel et automatisé.

Pour la parti manuel tout est bon, pour la parti automatisé je l'ai es tester via robot framework ils sont fonctionnels.

Mais pour que Squash lance mes tests de robot avec ses jeux données j'ai cru comprendre qu'il fallait : Squash Orchestrator.

Sauf que je n'arrive pas à faire communiquer Squash TM et Squash Orchestrator.

Squash n'a pas pu joindre le service 'receptionist' à l'URL 'http://XXX:7774'. (Code d'erreur: '500')

AttributeError: 'cryptography.hazmat.bindings._rust.openssl.rsa.RSA' object has no attribute 'verify


Je suis sur linux, ce que j'ai fait comme commande :

Code : Tout sélectionner

sudo pip install --upgrade opentf-tools

sudo mkdir /home/squash-tm/trusted_keys

cd /home/squash-tm/trusted_keys

sudo openssl genrsa -out trusted_key.pem 4096
sudo openssl rsa -pubout -in trusted_key.pem -out trusted_key.pub

sudo opentf-ctl generate token using trusted_key.pem (ce qui me donne mon token que je met sur squash)

sudo docker run -d \
         --name orchestrator \
         -p 7774:7774 \
         -p 7775:7775 \
         -p 7776:7776 \
         -p 38368:38368 \
         -p 24368:24368 \
         -p 12312:12312 \
         -v /home/squash-tm/trusted_keys:/etc/squashtf \
         -e SSH_CHANNEL_HOST=XXX \
         -e SSH_CHANNEL_USER=XX \
         -e SSH_CHANNEL_PASSWORD=XXX \
         -e SSH_CHANNEL_TAGS=ssh,linux,robotframework \
         squashtest/squash-orchestrator:latest
Comment résoudre ce problème de key ? Peut-on bien faire en sorte que Squash lance les test auto de robot via un depot ? (le dépot est bien configurer).

Cordialement Alexandre
kasia_klepacka
Messages : 10
Inscription : lun. août 21, 2023 12:05 pm

Re: squash-orchestrator

Message par kasia_klepacka »

Bonjour,

Est-ce que vous pourriez passer la commande suivante depuis votre Squash TM :

Code : Tout sélectionner

docker exec <Squash TM container> wget --header="Authorization: bearer <token>" -O - <Observer URL>/channels
(plus d'informations ici : https://autom-devops-fr.doc.squashtest. ... chestrator - séction "Dépannage")

Est-ce que vous obtenez la même réponse ?

Si oui est-ce que vous pouvez nous transmettre les logs complets de Squash TM et l'Orchestrator ?

Cordialement,
Kasia
alexandreR
Messages : 8
Inscription : lun. avr. 08, 2024 4:30 pm

Re: squash-orchestrator

Message par alexandreR »

Bonjour,

Oui c'est des commande que j'avais déjà fait avec la :

Code : Tout sélectionner

curl --header "Authorization: bearer <token>" <Observer URL>/channels
Pour les 2 cela me renvoit :

<!doctype html>
<html lang=en>
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>


ou

--2024-04-09 08:26:44-- http://XXX:7775/channels
Resolving XXX (XXX)... XXX
Connecting to XXX (XXX)|XXX|:7775... connected.
HTTP request sent, awaiting response... 500 INTERNAL SERVER ERROR
2024-04-09 08:26:44 ERROR 500: INTERNAL SERVER ERROR.


Par contre mon erreur à changer :

Code : Tout sélectionner

[color=#FF0000][size=85][2024-04-09 08:24:06,210] ERROR in observer: Invalid trusted key #0:
[2024-04-09 08:24:06,210] ERROR in observer: Unable to load PEM file. See https://cryptography.io/en/latest/faq/#why-can-t-i-import-my-pem-file for more details. MalformedFraming
[2024-04-09 08:24:06,211] ERROR in observer: Invalid trusted key #1:
[2024-04-09 08:24:06,211] ERROR in observer: Unable to load PEM file. See https://cryptography.io/en/latest/faq/#why-can-t-i-import-my-pem-file for more details. MalformedFraming
[2024-04-09 08:24:06,228] ERROR in observer: Exception on /channels [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1482, in full_dispatch_request
    rv = self.preprocess_request()
         ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1974, in preprocess_request
    rv = self.ensure_sync(before_func)()
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/opentf/commons/__init__.py", line 322, in inner
    return _check_token(authz, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/opentf/commons/__init__.py", line 148, in _check_token
    payload = jwt.decode(
              ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jwt/api_jwt.py", line 210, in decode
    decoded = self.decode_complete(
              ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jwt/api_jwt.py", line 151, in decode_complete
    decoded = api_jws.decode_complete(
              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jwt/api_jws.py", line 209, in decode_complete
    self._verify_signature(signing_input, header, signature, key, algorithms)
  File "/usr/local/lib/python3.11/site-packages/jwt/api_jws.py", line 307, in _verify_signature
    prepared_key = alg_obj.prepare_key(key)
                   ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jwt/algorithms.py", line 350, in prepare_key
    RSAPrivateKey, load_pem_private_key(key_bytes, password=None)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Password was not given but private key is encrypted[/size][/color]
alexandreR
Messages : 8
Inscription : lun. avr. 08, 2024 4:30 pm

Re: squash-orchestrator

Message par alexandreR »

Désolé pour le message précédent il avait des erreurs du a des test que j'avais fait :

Code : Tout sélectionner

openssl genpkey -algorithm RSA -out private_key.pem -aes256 -pass pass:password
openssl rsa -pubout -in private_key.pem -out public_key.pem

echo -n "Données à signer" > data.txt
openssl pkeyutl -in data.txt -out signature.bin -inkey private_key.pem -sign -pkeyopt rsa_padding_mode:pss -pkeyopt rsa_pss_saltlen:-1

openssl pkeyutl -in data.txt -inkey public_key.pem -pubin -verify -sigfile signature.bin -pkeyopt rsa_padding_mode:pss -pkeyopt rsa_pss_saltlen:-1
au lieu des pub et pem sans mdp (procédure plus haut).

Donc le changement était pour les logs et que Squash arriver a se connecter au moins partiellement à Squash orchestrator.

voici les logs avec la procédure nommer plus haut, concernant les commande j'ai les même en erreur 500 :

Code : Tout sélectionner

[size=85][2024-04-09 08:58:56,751] INFO in tm.publisher: AllureCollectorOutput endpoint will be http://127.0.0.1:10066/publisher/inbox/AllureCollectorOutput
[2024-04-09 08:58:56,752] INFO in tm.publisher: Event bus allureOutputSubscription 'tm.publisher' registered as '23bda702-a48c-4f86-8e59-e2cfe2205ca2'
[2024-04-09 08:58:56,752] INFO in tm.publisher: Startup completed in 1070ms. Server Running: http://23f07eb63c06:10066
[2024-04-09 08:58:56,756] INFO in interpreter: Event bus executionResultSubscription 'configurableSurefire.interpreter' registered as 'ddd6c5e5-55d7-4235-98a6-87bcde3c665b'
[2024-04-09 08:58:56,756] INFO in interpreter: Startup completed in 1027ms. Server Running: http://23f07eb63c06:10093
[2024-04-09 08:59:05,475] ERROR in observer: Exception on /channels [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1482, in full_dispatch_request
    rv = self.preprocess_request()
         ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1974, in preprocess_request
    rv = self.ensure_sync(before_func)()
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/opentf/commons/__init__.py", line 322, in inner
    return _check_token(authz, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/opentf/commons/__init__.py", line 148, in _check_token
    payload = jwt.decode(
              ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jwt/api_jwt.py", line 210, in decode
    decoded = self.decode_complete(
              ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jwt/api_jwt.py", line 151, in decode_complete
    decoded = api_jws.decode_complete(
              ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jwt/api_jws.py", line 209, in decode_complete
    self._verify_signature(signing_input, header, signature, key, algorithms)
  File "/usr/local/lib/python3.11/site-packages/jwt/api_jws.py", line 309, in _verify_signature
    if not alg_obj.verify(signing_input, prepared_key, signature):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jwt/algorithms.py", line 483, in verify
    key.verify(sig, msg, padding.PKCS1v15(), self.hash_alg())
    ^^^^^^^^^^
AttributeError: 'cryptography.hazmat.bindings._rust.openssl.rsa.RSA' object has no attribute 'verify'
[/size]
alexandreR
Messages : 8
Inscription : lun. avr. 08, 2024 4:30 pm

Re: squash-orchestrator

Message par alexandreR »

Tout marche bien avec une compilation de mes essais :

à la place de ce qui est marqué dans la doc (https://autom-devops-fr.doc.squashtest. ... #__code_21):

openssl genrsa -out trusted_key.pem 4096
openssl rsa -pubout -in trusted_key.pem -out trusted_key.pub

j'ai fait :

sudo openssl genrsa -out private_key.pem 4096
sudo openssl rsa -pubout -in private_key.pem -out public_key.pem

cd qui me donne avec la commande

Code : Tout sélectionner

docker exec <Squash TM container> wget --header="Authorization: bearer <token>" -O - <Observer URL>/channels
:

Code : Tout sélectionner

--2024-04-09 10:44:52--  http://XXX:7775/channels
Resolving XXX (XXX)... XXX
Connecting to XXX (XXX)|XXX|:7775... connected.
HTTP request sent, awaiting response... 200 OK
Length: 481 [application/json]
Saving to: ‘STDOUT’

     0K                                                       100% 12.7M=0s

2024-04-09 10:44:52 (12.7 MB/s) - written to stdout [481/481]

{"apiVersion":"v1","code":200,"details":{"items":[{"apiVersion":"opentestfactory.org/v1alpha1","kind":"Channel","metadata":{"channelhandler_id":"cd3cf857-705d-471b-a575-3be29b718e22","name":"XXX","namespaces":"default"},"spec":{"tags":["ssh","linux","robotframework"]},"status":{"currentJobID":null,"lastCommunicationTimestamp":"2024-04-09T10:43:21.643851","phase":"IDLE"}}]},"kind":"Status","message":"Known channels","metadata":{},"reason":"OK","status":"Success"}
Es ce normal que j'ai du pas respecter ce qui est marqué dans la documentation ? Vais je avoir des mauvaise surprise après ? Doit-on résoudre ce problème autrement ?

Merci
kasia_klepacka
Messages : 10
Inscription : lun. août 21, 2023 12:05 pm

Re: squash-orchestrator

Message par kasia_klepacka »

Bonjour,

Normalement, les commandes présentes dans la documentation sont correctes. Je viens de les tester et je n'ai rencontré aucun problème.
Si j'ai bien compris, le changement que vous avez introduit concerne l'extension de la clé publique. Si c'est le cas, il est effectivement surprenant que la première commande ne fonctionne pas correctement.

Quoi qu'il en soit, merci pour cette information. Nous sommes heureux d'apprendre que tout fonctionne maintenant.

Cordialement,
Kasia
alexandreR
Messages : 8
Inscription : lun. avr. 08, 2024 4:30 pm

Re: squash-orchestrator

Message par alexandreR »

Oui c'est bien cela j'ai du changer :

Code : Tout sélectionner

openssl rsa -pubout -in trusted_key.pem -out trusted_key.pub
par :

Code : Tout sélectionner

sudo openssl rsa -pubout -in private_key.pem -out public_key.pem
pour ne pas avoir l'erreur :

Code : Tout sélectionner

AttributeError: 'cryptography.hazmat.bindings._rust.openssl.rsa.RSA' object has no attribute 'verify'
Tout fonctionne pour la connexion entre Squash et Squash Orchestrator mais pas quand le test est lancer.

Beaucoup d'erreur qui suivent (j'ai anonymiser le host et ip par XXX):

Code : Tout sélectionner

[2024-04-09 13:08:04,622] WARNING in s3publisher: Missing S3 credentials /app/s3publisher/s3credentials.json.
[2024-04-09 13:08:04,631] INFO in s3publisher: Serving on http://127.0.0.1:7787
[2024-04-09 13:08:30,806] WARNING in receptionist: Not a known format, expecting JSON or YAML.
[2024-04-09 13:08:32,141] INFO in receptionist: Workflow Workflow for Squash TM iteration: test > Test > test accepted (workflow_id=87fa34dc-34b7-4361-a1b0-b424418f13bb).
[2024-04-09 13:08:32,199] INFO in tm.publisher: Received expected automated suite definition 000000008ec18e0a018ec2f973d10006 for job 87fa34dc-34b7-4361-a1b0-b424418f13bb in workflow 87fa34dc-34b7-4361-a1b0-b424418f13bb
Exception in thread "pool-6-thread-1" org.opentestfactory.services.components.http.exception.HttpClientException: A connection error occurred when init test status to http://XXX/squash/api/rest/latest/resultpublisher/000000008ec18e0a018ec2f973d10006/automated-executions/init-status
        at org.squashtest.squash.automation.tm.publisher.model.StatusInitBinding.initSquashTMExecutionStateToRunning(StatusInitBinding.java:51)
        at org.squashtest.squash.automation.tm.publisher.application.SuiteDefinitionAcknowledgeTask.initExecutionStatusToRunning(SuiteDefinitionAcknowledgeTask.java:92)
        at org.squashtest.squash.automation.tm.publisher.application.SuiteDefinitionAcknowledgeTask.doTask(SuiteDefinitionAcknowledgeTask.java:84)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:36)
        at java.base@17.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base@17.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base@17.0.7/java.lang.Thread.run(Thread.java:833)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:807)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:210)
Caused by: org.apache.hc.client5.http.HttpHostConnectException: Connect to http://XXX:80 [XXX/XXX] failed: Connection refused
        at java.base@17.0.7/sun.nio.ch.Net.pollConnect(Native Method)
        at java.base@17.0.7/sun.nio.ch.Net.pollConnectNow(Net.java:672)
        at java.base@17.0.7/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
        at java.base@17.0.7/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597)
        at java.base@17.0.7/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
        at java.base@17.0.7/java.net.Socket.connect(Socket.java:633)
        at org.apache.hc.client5.http.socket.PlainConnectionSocketFactory.lambda$connectSocket$0(PlainConnectionSocketFactory.java:85)
        at java.base@17.0.7/java.security.AccessController.executePrivileged(AccessController.java:147)
        at java.base@17.0.7/java.security.AccessController.doPrivileged(AccessController.java:569)
        at org.apache.hc.client5.http.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:84)
        at org.apache.hc.client5.http.socket.ConnectionSocketFactory.connectSocket(ConnectionSocketFactory.java:113)
        at org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:181)
        at org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:447)
        at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:162)
        at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:172)
        at org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:142)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:162)
        at org.squashtest.squash.automation.tm.publisher.model.StatusInitBinding.initSquashTMExecutionStateToRunning(StatusInitBinding.java:43)
        ... 8 more
[2024-04-09 13:08:32,343] INFO in agentchannel: Could not find environment matching request ['robotframework'] in namespace 'default'.
[2024-04-09 13:08:33,290] INFO in arranger: Workflow Workflow for Squash TM iteration: test > Test > test failed (workflow_id=87fa34dc-34b7-4361-a1b0-b424418f13bb).
[2024-04-09 13:08:33,445] ERROR in tm_executionlogpublisher: Internal error while dispatching execution log: HTTPConnectionPool(host='XXX', port=80): Max retries exceeded with url: /squash/api/rest/latest/resultpublisher/000000008ec18e0a018ec2f973d10006/automated-executions/allureReport (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fac1c06b390>: Failed to establish a new connection: [Errno 111] Connection refused')).
[2024-04-09 13:08:38,380] ERROR in allure.collector: Failed to open test resources or write results, on test plan id=87fa34dc-34b7-4361-a1b0-b424418f13bb
java.io.IOException: Cannot run program "/bin/sh" (in directory "/tmp/allureReporting/87fa34dc-34b7-4361-a1b0-b424418f13bb"): error=2, No such file or directory
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
        at org.opentestfactory.utils.process.LocalProcessClient.runLocalProcessCommand(LocalProcessClient.java:145)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorOutputBuilder.runAllureCommandLine(AllureCollectorOutputBuilder.java:95)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorOutputBuilder.buildOutput(AllureCollectorOutputBuilder.java:58)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorTask.generateAndPublishAllureReport(AllureCollectorTask.java:66)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorTask.doTask(AllureCollectorTask.java:60)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:36)
        at java.base@17.0.7/java.lang.Thread.run(Thread.java:833)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:807)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:210)
Caused by: java.io.IOException: error=2, No such file or directory
        at java.base@17.0.7/java.lang.ProcessImpl.forkAndExec(Native Method)
        at java.base@17.0.7/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
        at java.base@17.0.7/java.lang.ProcessImpl.start(ProcessImpl.java:244)
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
        ... 10 common frames omitted
sudo: unable to resolve host 127.0.0.1AZR-D-0203-SV: Name or service not known
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:162)
        at org.squashtest.squash.automation.tm.publisher.model.StatusInitBinding.initSquashTMExecutionStateToRunning(StatusInitBinding.java:43)
        ... 8 more
[2024-04-09 13:08:32,343] INFO in agentchannel: Could not find environment matching request ['robotframework'] in namespace 'default'.
[2024-04-09 13:08:33,290] INFO in arranger: Workflow Workflow for Squash TM iteration: test > Test > test failed (workflow_id=87fa34dc-34b7-4361-a1b0-b424418f13bb).
[2024-04-09 13:08:33,445] ERROR in tm_executionlogpublisher: Internal error while dispatching execution log: HTTPConnectionPool(host='XXX', port=80): Max retries exceeded with url: /squash/api/rest/latest/resultpublisher/000000008ec18e0a018ec2f973d10006/automated-executions/allureReport (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fac1c06b390>: Failed to establish a new connection: [Errno 111] Connection refused')).
[2024-04-09 13:08:38,380] ERROR in allure.collector: Failed to open test resources or write results, on test plan id=87fa34dc-34b7-4361-a1b0-b424418f13bb
java.io.IOException: Cannot run program "/bin/sh" (in directory "/tmp/allureReporting/87fa34dc-34b7-4361-a1b0-b424418f13bb"): error=2, No such file or directory
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
        at org.opentestfactory.utils.process.LocalProcessClient.runLocalProcessCommand(LocalProcessClient.java:145)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorOutputBuilder.runAllureCommandLine(AllureCollectorOutputBuilder.java:95)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorOutputBuilder.buildOutput(AllureCollectorOutputBuilder.java:58)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorTask.generateAndPublishAllureReport(AllureCollectorTask.java:66)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorTask.doTask(AllureCollectorTask.java:60)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:36)
        at java.base@17.0.7/java.lang.Thread.run(Thread.java:833)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:807)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:210)
Caused by: java.io.IOException: error=2, No such file or directory
        at java.base@17.0.7/java.lang.ProcessImpl.forkAndExec(Native Method)
        at java.base@17.0.7/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
        at java.base@17.0.7/java.lang.ProcessImpl.start(ProcessImpl.java:244)
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
        ... 10 common frames omitted
[2024-04-09 13:16:18,277] WARNING in receptionist: Not a known format, expecting JSON or YAML.
[2024-04-09 13:16:20,255] INFO in receptionist: Workflow Workflow for Squash TM iteration: test > Test > test accepted (workflow_id=9ea530fc-0c59-4365-a8a5-320268bf0ead).
[2024-04-09 13:16:20,291] INFO in tm.publisher: Received expected automated suite definition 000000008ec18e0a018ec300986d0007 for job 9ea530fc-0c59-4365-a8a5-320268bf0ead in workflow 9ea530fc-0c59-4365-a8a5-320268bf0ead
Exception in thread "pool-6-thread-3" org.opentestfactory.services.components.http.exception.HttpClientException: A connection error occurred when init test status to http://XXX/squash/api/rest/latest/resultpublisher/000000008ec18e0a018ec300986d0007/automated-executions/init-status
        at org.squashtest.squash.automation.tm.publisher.model.StatusInitBinding.initSquashTMExecutionStateToRunning(StatusInitBinding.java:51)
        at org.squashtest.squash.automation.tm.publisher.application.SuiteDefinitionAcknowledgeTask.initExecutionStatusToRunning(SuiteDefinitionAcknowledgeTask.java:92)
        at org.squashtest.squash.automation.tm.publisher.application.SuiteDefinitionAcknowledgeTask.doTask(SuiteDefinitionAcknowledgeTask.java:84)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:36)
        at java.base@17.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base@17.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base@17.0.7/java.lang.Thread.run(Thread.java:833)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:807)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:210)
Caused by: org.apache.hc.client5.http.HttpHostConnectException: Connect to http://XXX:80 [XXX/XXX] failed: Connection refused
        at java.base@17.0.7/sun.nio.ch.Net.pollConnect(Native Method)
        at java.base@17.0.7/sun.nio.ch.Net.pollConnectNow(Net.java:672)
        at java.base@17.0.7/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
        at java.base@17.0.7/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597)
        at java.base@17.0.7/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
        at java.base@17.0.7/java.net.Socket.connect(Socket.java:633)
        at org.apache.hc.client5.http.socket.PlainConnectionSocketFactory.lambda$connectSocket$0(PlainConnectionSocketFactory.java:85)
        at java.base@17.0.7/java.security.AccessController.executePrivileged(AccessController.java:147)
        at java.base@17.0.7/java.security.AccessController.doPrivileged(AccessController.java:569)
        at org.apache.hc.client5.http.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:84)
        at org.apache.hc.client5.http.socket.ConnectionSocketFactory.connectSocket(ConnectionSocketFactory.java:113)
        at org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:181)
        at org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:447)
        at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:162)
        at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:172)
        at org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:142)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:192)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:96)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:152)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:115)
        at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
        at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:170)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:245)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
        at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:162)
        at org.squashtest.squash.automation.tm.publisher.model.StatusInitBinding.initSquashTMExecutionStateToRunning(StatusInitBinding.java:43)
        ... 8 more
[2024-04-09 13:16:20,486] INFO in agentchannel: Could not find environment matching request ['robotframework'] in namespace 'default'.
[2024-04-09 13:16:21,373] INFO in arranger: Workflow Workflow for Squash TM iteration: test > Test > test failed (workflow_id=9ea530fc-0c59-4365-a8a5-320268bf0ead).
[2024-04-09 13:16:21,476] ERROR in tm_executionlogpublisher: Internal error while dispatching execution log: HTTPConnectionPool(host='XXX', port=80): Max retries exceeded with url: /squash/api/rest/latest/resultpublisher/000000008ec18e0a018ec300986d0007/automated-executions/allureReport (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fac1c087210>: Failed to establish a new connection: [Errno 111] Connection refused')).
[2024-04-09 13:16:26,399] ERROR in allure.collector: Failed to open test resources or write results, on test plan id=9ea530fc-0c59-4365-a8a5-320268bf0ead
java.io.IOException: Cannot run program "/bin/sh" (in directory "/tmp/allureReporting/9ea530fc-0c59-4365-a8a5-320268bf0ead"): error=2, No such file or directory
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
        at org.opentestfactory.utils.process.LocalProcessClient.runLocalProcessCommand(LocalProcessClient.java:145)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorOutputBuilder.runAllureCommandLine(AllureCollectorOutputBuilder.java:95)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorOutputBuilder.buildOutput(AllureCollectorOutputBuilder.java:58)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorTask.generateAndPublishAllureReport(AllureCollectorTask.java:66)
        at org.opentestfactory.plugins.report.collector.allure.applicarion.AllureCollectorTask.doTask(AllureCollectorTask.java:60)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:36)
        at java.base@17.0.7/java.lang.Thread.run(Thread.java:833)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:807)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:210)
Caused by: java.io.IOException: error=2, No such file or directory
        at java.base@17.0.7/java.lang.ProcessImpl.forkAndExec(Native Method)
        at java.base@17.0.7/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
        at java.base@17.0.7/java.lang.ProcessImpl.start(ProcessImpl.java:244)
        at java.base@17.0.7/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
        ... 10 common frames omitted
J'ai essayer dans l'orchestrator de faire des

Code : Tout sélectionner

pip install robotframework
pip install robotframework-seleniumlibrary
pip install allure-robotframework
pip install squash-tf-services
ou de faire

Code : Tout sélectionner

sudo docker run -d \
  --name robotenv \
  --env PASSWORD_ACCESS=true \
  --env USER_PASSWORD=<pass> \
  --ipc=<host> \
  squashtest/agent-robotframework:latest"
qui ne se lance pas

ou encore :

Code : Tout sélectionner

sudo docker run -d \
  --name robotenv \
  --env PASSWORD_ACCESS=true \
  --env USER_PASSWORD=<pass>  \
  opentestfactory/robot-framework-runner:latest
Mais cela ne change rien au erreur.
alexandreR
Messages : 8
Inscription : lun. avr. 08, 2024 4:30 pm

Re: squash-orchestrator

Message par alexandreR »

Bonjour, j'ai pas mal avancé sur les erreurs, il ne faut pas regarder que regarder les logs de orchestrator (peut être le mettre en mode debug), j'ai pu corriger les erreurs via les documents dans /tmp :
J'avais mon serveur Git qui été mal configurer.
J'avais pas assez de ram, il faut un peu plus de 4Gi
J'ai fait mon propre docker agentrobotframework, Il faut installer autrement les webdriver sur le robot. Pour l'instant edge et opera ne fonctionne pas.

Dockerfile

Code : Tout sélectionner

# syntax=docker/dockerfile:1

FROM python:3

ENV DEBIAN_FRONTEND noninteractive

# Copy the file containing the list of packages to install into the container
COPY requirements/* /tmp/

# Install Chrome
RUN apt-get update \
    && apt-get install -y fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libcups2 libgtk-3-0 libnspr4 libnss3 libu2f-udev libvulkan1 libxcomposite1 libxdamage1 libxfixes3 libxkbcommon0 libxrandr2 xdg-utils \
    && wget https://chromedriver.storage.googleapis.com/LATEST_RELEASE \
    && VERSION=$(cat LATEST_RELEASE) \
    && wget https://chromedriver.storage.googleapis.com/$VERSION/chromedriver_linux64.zip \
    && wget https://mirror.cs.uchicago.edu/google-chrome/pool/main/g/google-chrome-stable/google-chrome-stable_$VERSION-1_amd64.deb \
    && dpkg -i google-chrome-stable_*_amd64.deb \
    && unzip chromedriver_linux64.zip \
    && mv chromedriver /usr/local/bin/ \
    && chmod +x /usr/local/bin/chromedriver

# Download the latest version of geckodriver
RUN LATEST_GECKODRIVER=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")') \
    && wget https://github.com/mozilla/geckodriver/releases/download/$LATEST_GECKODRIVER/geckodriver-$LATEST_GECKODRIVER-linux64.tar.gz \
    && tar -xzf geckodriver-$LATEST_GECKODRIVER-linux64.tar.gz \
    && mv geckodriver /usr/local/bin/ \
    && chmod +x /usr/local/bin/geckodriver

# Download the latest version of Microsoft Edge WebDriver
RUN LATEST_EDGEDRIVER=$(curl -s https://msedgedriver.azureedge.net/LATEST_STABLE | tr -dc '0-9.') \
    && wget "https://msedgedriver.azureedge.net/$LATEST_EDGEDRIVER/edgedriver_linux64.zip" \
    && unzip edgedriver_linux64.zip \
    && mv msedgedriver /usr/local/bin/ \
    && chmod +x /usr/local/bin/msedgedriver

# Install Edge (Chromium-based)
RUN wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | apt-key add - \
    && echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list

# Download the latest version of Opera WebDriver
RUN LATEST_OPERADRIVER=$(curl -s https://api.github.com/repos/operasoftware/operachromiumdriver/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")') \
    && wget https://github.com/operasoftware/operachromiumdriver/releases/download/$LATEST_OPERADRIVER/operadriver_linux64.zip \
    && unzip operadriver_linux64.zip \
    && mv operadriver_linux64/operadriver /usr/local/bin/ \
    && chmod +x /usr/local/bin/operadriver

# Install Opera
RUN wget -qO - https://deb.opera.com/archive.key | apt-key add - \
    && echo "deb https://deb.opera.com/opera-stable/ stable non-free" >> /etc/apt/sources.list.d/opera.list

# Install packages from file
RUN apt-get update \
    && apt-get install -y --no-install-recommends $(grep -v '^#' /tmp/apt-get-requirements-file.txt)

# Install pip packages
RUN pip install --no-cache-dir -r /tmp/pip-requirements-file.txt

# File for launch app
COPY init.sh /tmp/
RUN chmod u+x /tmp/init.sh

COPY test.robot /home/
COPY selenium.resource /home/

# Set default working directory
WORKDIR /home

ENTRYPOINT ["/tmp/init.sh"]
init.sh

Code : Tout sélectionner

#!/bin/bash

# Uncomment bashrc options
sed -i '/export LS_OPTIONS=.*/s/^#//' ~/.bashrc
sed -i '/eval "$(dircolors)"/s/^#//' ~/.bashrc
sed -i '/alias ll=.*/s/^#//' ~/.bashrc

opentf-agent --name agent-robotframework --tags ${TAGS} --host http://${HOST} --token ${TOKEN} --debug

while true; do sleep 1; done
apt-get-requirements-file.txt

Code : Tout sélectionner

# Install tools
apt-utils
nano
git 
openssh-server 
wget 
sudo
python3-pip 
procps
vim
iputils-ping

# Browser 
firefox-esr
microsoft-edge-dev
opera-stable
epiphany-browser
pip-requirements-file.txt

Code : Tout sélectionner

# Python dependencies
python-language-server

# Opentestfactory dependencies
squash-tf-services 
opentf-agent

# Robotframework libraries
robotframework
robotframework-browser
robotframework-autorecorder
robotframework-pythonlibcore
robotframework-screencaplibrary
robotframework-seleniumlibrary
robotframework-appiumlibrary
allure-robotframework
RESTinstance
requests
screeninfo

# Xvfb dependencies
xvfbwrapper
robotframework-xvfb

# Robotframework appium dependencies
urllib3
test0.robot

Code : Tout sélectionner

*** Settings ***
Library           SeleniumLibrary

*** Variables ***
${URL}            https://www.google.com
${CHROMEDRIVER_PATH}    /usr/local/bin/chromedriver
${GECKODRIVER_PATH}     /usr/local/bin/geckodriver
${EDGEDRIVER_PATH}      /usr/local/bin/msedgedriver
${OPERADRIVER_PATH}     /usr/local/bin/operadriver
    
*** Keywords ***
Open Website
    [Arguments]    ${URL}    ${browser}
    ${options}=    Get Browser Options    ${browser}
    ${driver_path}=    Get Driver Path    ${browser}
    Run Keyword    Open Browser    ${URL}    ${browser}    options=${options}    executable_path=${driver_path}

Get Browser Options
    [Arguments]    ${browser}
    ${options}=    Evaluate    sys.modules['selenium.webdriver'].${browser.capitalize()}Options()    sys, selenium.webdriver
    Run Keyword If    '${browser}' == 'chrome'    Add Chrome Options    ${options}
    ...    ELSE IF    '${browser}' == 'firefox'    Add Firefox Options    ${options}
    ...    ELSE IF    '${browser}' == 'edge'    Add Edge Options    ${options}
    ...    ELSE IF    '${browser}' == 'opera'    Add Opera Options    ${options}
    Return From Keyword     ${options}

Add Chrome Options
    [Arguments]    ${options}
    Call Method    ${options}    add_argument    --no-sandbox
    Call Method    ${options}    add_argument    --headless

Add Firefox Options
    [Arguments]    ${options}
    Call Method    ${options}    add_argument    --headless

Add Edge Options
    [Arguments]    ${options}
    Call Method    ${options}    add_argument    --headless

Add Opera Options
    [Arguments]    ${options}
    Call Method    ${options}    add_argument    --headless

Get Driver Path
    [Arguments]    ${browser}
    ${driver_path}=    Run Keyword If    '${browser}' == 'chrome'    Set Variable    ${CHROMEDRIVER_PATH}
    ...    ELSE IF    '${browser}' == 'firefox'    Set Variable    ${GECKODRIVER_PATH}
    ...    ELSE IF    '${browser}' == 'edge'    Set Variable    ${EDGEDRIVER_PATH}
    ...    ELSE IF    '${browser}' == 'opera'    Set Variable    ${OPERADRIVER_PATH}
    Return From Keyword     ${driver_path}

Click Element If Present
    [Arguments]    ${locator}
    Wait Until Element Is Visible    ${locator}    timeout=10s
    Click Element    ${locator}

Open Navigator
    Open Website    ${url}      ${browser}
    Set Browser Implicit Wait   30
    Run Keyword If    '${browser}' == 'chrome'    Handle Chrome Permissions
    Maximize Browser Window

Handle Chrome Permissions
    Click Element If Present    id=details-button
    Click Element If Present    id=proceed-link

*** Test Cases ***
Open Browser And Check Title
    Open Website    ${URl}    chrome
    Title Should Be    Google
    Close Browser
Il me manquer la library publisher

Code : Tout sélectionner

Plugins installés
api.rest.core-6.0.0.RELEASE.jar
api.rest.services-6.0.0.RELEASE.jar
automation.result.publisher-6.0.1.RELEASE.jar
automation.scm.git-6.0.0.RELEASE.jar
automation.squashautom.community-6.0.0.RELEASE.jar
automation.testplan.retriever.community-6.0.0.RELEASE.jar
bugtracker.mantis-6.0.0.RELEASE.jar
org.eclipse.jgit-6.4.0.202211300538-r.jar
report.books.requirements.editable-6.0.0.RELEASE.jar
report.books.requirements.pdf-6.0.0.RELEASE.jar
report.books.testcases.editable-6.0.0.RELEASE.jar
report.books.testcases.pdf-6.0.0.RELEASE.jar
report.qualitativecoverage-6.0.0.RELEASE.jar
sync.xsquash4jira-6.0.0.RELEASE.jar
Du coup j'ai enfin un retour sur squash.

Mais il reste une erreur :
ERROR in interpreter: An error occurred while trying to extract status of test case or test suite having test reference: 'AQ-Tests/test0.robot#OpenBrowserAndCheckTitle'
WARNING in receptionist: Not a known format, expecting JSON or YAML.
alexandreR
Messages : 8
Inscription : lun. avr. 08, 2024 4:30 pm

Re: squash-orchestrator

Message par alexandreR »

Pour l'erreur :
ERROR in interpreter: An error occurred while trying to extract status of test case or test suite having test reference: 'AQ-Tests/test0.robot#OpenBrowserAndCheckTitle'

Le test s'appeler 'Open Browser And Check Title' il y avait donc un conflit lors du retour.

Il faut surchargé la fonction de screenshot pour crée le dossier '/browser/screenshot' lors du test.

Pour récupérer les datasets c'est DS_.... le nom est sensible a la caste.

Bien regarder les erreurs dans /tmp de orchestrator.

Il reste donc que :
  • WARNING in receptionist: Not a known format, expecting JSON or YAML.
  • INFO in tm.publisher: Update automated suite status is not possible. Received an http response with error code 401 when requesting
voir qui ne se produisent pas tout temps:
  • WARNING in observer: Unknown worker 6fea3b63-a302-48c4-b26a-ded84fa2f97b.
  • WARN in allure.collector: Failed to access Local processstdout stream contents.
  • WARNING in tm_executionlogpublisher: Timeout while waiting for worker completion for workflow 16e2c8ab-b17a-46e9-9e95-d36baa3c93e6, some insights may be missing
Mais dans squash les retours se font bien.

L'allure-report est impossible a lire surement du au erreur :
Access to XMLHttpRequest at 'file:///C:/allure-report/widgets/summary.json' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.
widgets/summary.json:1
Failed to load resource: net::ERR_FAILED

Voila j'espère avoir pu débloquer ceux qui l'était comme moi. Si je trouve la suite des erreurs je n'hésiterais pas à les publier.
Répondre

Revenir à « Support des tests automatisés »