Audit sur une page en Single Page Application

Bonjour,

j’essaie d’auditer une page d’un site interne avec Asqatasun v4.0.3 sur un docker en local.
L’audit semble fonctionner correctement, mais lorsque que je regarde le code HTML de la page auditée, je m’aperçoit que le code de la partie générée de la page n’apparaît pas.

J’ai mis les logs en mode DEBUG et je n’ai pas de WARN ni d’ERROR dans les logs, tout semble se dérouler corrrectement.

La page doit mettre un peu trop de temps à charger le contenu, du coup la partie générée n’est pas auditée.
Existe-t-il un paramètre permettant de gérer un timeout pour laisser la page se charger ou une autre solution pour auditer ce genre de page ?

Bonjour,

Il y a effectivement un timeout paramétrable (faut que je retrouve le paramètre dans les fichiers de conf). Combien de temps met ta page à se charger? Peut etre est ce qu’il y a une ressource inaccessible? As tu besoin de configurer un proxy?

koj

La page met environ 5 secondes à se charger.
Je n’ai pas eu besoin de paramétrer de proxy, mon site est accessible sans proxy.
Par contre j’ai mis le paramètre bypassUrlCheck à true pour pouvoir y accéder.

J’ai testé plusieurs pages du site et à chaque fois c’est juste la partie générée qui ne s’affiche pas, il s’agit d’un div avec le contenu de la page, les div précédents sont bien présents dans le code html généré.

En cas de ressource inaccessible, est-ce qu’un message s’affiche dans les logs ?

Bonjour,

Avez-vous des nouvelles par rapport au paramètre permettant de modifier le timeout ?

Merci

Dans le fichier de conf asqatasun.conf, tu as la propriété pageLoadTimeout dont la valeur est fixée par défaut à 20 (donc 20 secondes).
Essaie de faire varier cette valeur, et de redemarrer, pour voir si cela a un impact :slight_smile:

La modification de ce paramètre n’a pas d’impact sur l’audit, j’ai beau mettre un temps super élevé, le temps d’audit reste le même.
L’audit se limite toujours au code source de la page sans la partie générée.

@meriadec est-ce que ta page est visible sur les internets ?

Qu’est-ce que tu utilises comme framework JS + version ? Un truc à tester aussi : prendre un Firefox ESR v52 et tester ta page dedans en local sur ta machine.

La page n’est pas sur les internets, c’est un site interne
Le framework utilisé est emberJS en version 2.18
J’ai testé le site sur un Firefox ESR 52 local, la page s’affiche correctement

@meriadec, pourrais-tu refaire le test avec Firefox 31ESR qui est la version utilisée par Asqatasun ?

Idéalement, nous aurions besoin d’un exemple simple pour reproduire ce bug.


@koj, c’est bien dans la méthode FirefoxDriver() de la classe FirefoxDriverPoolableObjectFactory qu’est utilisée la propriété pageLoadTimeout ?

La question que je me pose, c’est à quel événement du navigateur ( DOMContentLoaded, window.onload ) correspond cet événement “pageLoad” de selenium ? Dans le cas détaillé par @meriadec, les affichages générés se font peut-être après cet événement “pageLoad” de selenium.

A noter, dans la documentation de selenium (certainement plus récente que la version actuellement utilisée dans Asqatasun), il existe une méthode setScriptTimeout() (pour un timeout sur les js asynchrone).

@fabrice , la page s’affiche correctement avec Firefox 31ESR.
Je n’ai pas la main sur le code, du coup je vais avoir du mal à fournir un exemple.
J’ai trouvé un moyen de contournement en enregistrant la page HTML une fois correctement chargée et en utilisant l’audit de fichier.

@meriadec,

Sans exemple, nous ne pourrons pas reproduire le bug exactement. Idéalement, il faudrait connaître les temps DOMContentLoaded , window.onload et le moment où est affiché le contenu qui manque lors des audits.

Autrement, l’idée serait de monter un exemple de toute pièce. Pour ma part, je testerai bien une page avec du JS qui s’exécute bien après DOMContentLoaded et window.onload.

Une solution existe peut-être en passant par les scénarios Asqatasun car dans la documentation est indiqué : “You may want to add a pause. This is typically used when a page is slow to respond.


pour emberJS tu connais ember-a11y-testing ?