Code Monkey home page Code Monkey logo

seleniumrobot-server's People

Contributors

bhecquet avatar dependabot[bot] avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ayoubkhayef

seleniumrobot-server's Issues

Affichage des résultats de test

A partir de l'écran de choix de l'application, 2 boutons:

  • le premier mène à la comparaison des snapshots
  • le 2ème mène à l'affichage des résultats

Ce dernier écran se compose:

  • d'une zone de filtrage (dates, environnement, navigateur)
  • d'une zone d'affichage qui présentera un tableau avec tous les résultats de test pour la version, en fonction des filtres sélectionnés. En abscisse, la date et le numéro de la session, en ordonnée le nom du cas de test
    Chaque case représente 1 résultat. Si le test n'a pas été exécuté sur une session, celle-ci est grisée
    En cliquant sur un résultat, on arrive sur le détail de la session (équivalent du fichier de résultat de seleniumRobot)

A l'enregistrement des résultats depuis seleniumRobot, on va enregistrer les snapshots si ils sont disponibles. Mais la comparaison ne se fera que si l'options correspondante (à créer) de seleniumRobot est activée

Ajouter un flag à session pour savoir si celle-ci est une session de test ou une session de comparaison de snapshots. Ainsi, seules ces dernières seront affichées lorsqu'on voudra comparer les images. Les différences entre images seront également calculées uniquement dans ce cas là. Attention à l'utilisation des snapshots lors des recherches via filter(). Il faudra prendre en compte uniquement les sessions actives pour la recherche de différences

Ne plus partager les testcase entre sessions

Actuellement, si un test case ou un test step a, lors de sa création, les mêmes informations qu'un case de test ou étape existante, elle n'est pas recréée. L'inconvénient, c'est que si lors d'une session de test, une étape est ajoutée à un test par rapport à l'exécution précédente, alors, l'ordre d'affichage ne sera pas le bon

Il faut donc faire en sorte que lors de la création, un nouveau cas de test soit créé à chaque fois. Même chose pour les steps
Au niveau de l'IHM, il faut que le filtrage et l'affichage regroupent les tests par nom

Enregistrement d'un Snapshot par SeleniumRobot

Au lancement des tests, SeleniumRobot créé un ID de session basé sur l'heure et un code aléatoire. Celui-ci sera donc unique. Cet ID est transmis au serveur pour créer la session sans tests associés
Lorsqu'un test démarre, SeleniumRobot créé celui-ci sur le serveur s'il n'existe pas déjà et l'associe à la session => L'ID du test est récupéré
A chaque étape de test, on la créé si elle n'existe pas. Cela va associer cette étape au test et on va récupérer l'ID de l'étape
Chacun des 3 ID ainsi récupéré sera utilisé pour l'enregistrement de la capture

When several variables have the same name, do not render always the same

When we query for variables, if a variable is defined twice (with 2 different values) for example, the same variable will always be rendered, based on the list returned by database

Add shuffle on list of variable so that a different value (for the same variable) can be get between calls

IHM: layout

L'écran est divisé en 2. La partie gauche gère la sélection des tests, la partie droite sert à l'affichage de la comparaison

En tête, une liste déroulante des sessions de test avec la date
Une fois la session sélectionnée, un tableau situé sous les sessions présentera les tests exécutés.
Lorsqu'on sélectionne un test, on affiche dans une liste en dessous la liste des étapes du test
Le clic sur une étape affiche la comparaison dans le panneau de droite

Re-enable CSRF protection

La protection CSRF a été désactivée pour le moment afin de pouvoir avancer, mais elle devrait être réactivée sur les vues de l'IHM
En revanche, les vues de l'API ne devraient pas l'activer

La comparaison pourrait être faite entre images d'une même étape quelque soit le test

Actuellement, la comparaison est réalisée entre les mêmes étapes d'un même test pour différentes sessions de test. L'inconvénient de ce mode, c'est que si on exclut une zone de la comparaison pour une étape d'un test, il faudra faire la même opération (au risque d'en oublier) sur tous les tests utilisant cette étape. Même chose pour un changement de référence.

ATTENTION: Une étape représentant une page spécifique de l'application, il est en revanche possible qu'au sein de mêmes étapes de test, le rendu soit totalement différent

Ainsi, il serait probablement plus intéressant de pouvoir partager les zones d'exclusion entre mêmes étapes de différents tests.

IHM: Possibilité de sélectionner une zone de l'image à exclure de la comparaison

Il est possible de sélectionner une zone de l'image pour l'exclure de la comparaison.
Dans ce cas, le résultat de la comparaison doit être mis à jour automatiquement (mise à jour du tableau des étapes et du tableau des tests) avec les nouvelles couleurs si nécessaire

Cette zone d'exclusion devient valable pour toutes les sessions de test ultérieures sur l'étape spécifique de ce test.

IHM: la comparaison affiche les différences

Lorsqu'on clique sur une étape de test, les 2 images (référence et celle de l'étape) sont affichées côte à côte dans le panneau d'affichage.
S'il y a des différences entre les images, celles-ci sont surlignées en rouge (pixel)

Dans le cas où il n'y a pas de référence, la partie gauche du panneau d'affichage sera vide et un message indiquera que l'image de droite est l'image de référence

IHM: possibilité de rechercher une session de test par nom, navigateur, date

Le panneau de contrôle affiche un champ permettant de rechercher les sessions de test:

  • réalisées avec un navigateur spécifique: "browser:firefox"
  • contenant un test "test:<nom_test>"
  • exécutées à une date "date:"
  • d'une application "app:<mon_app>"
    Plusieurs critères peuvent être combinés

Un bouton OK permet ensuite de lancer la recherche.
Les sessions correspondantes sont affichées dans la liste déroulante en lieu et place de toutes les sessions

Admin site should allow sessions administration

Allow to change TTL on sessions
Delete sessions

  • this should delete all related snapshots
  • recompute references if the deleted session contains reference
  • display a warning when user is about to delete reference snapshots

IHM: chaque ligne de la liste des tests est colorée

La coloration de la ligne dépend de l'état du test.
Dans un premier temps, il s'agira uniquement de l'état des comparaisons
Dans un second temps, l'état pourra aussi prendre en compte le retour de la part de SeleniumRobot

Pouvoir déterminer qu'une image n'est plus une référence

Si, par erreur, on a indiqué qu'une image était une référence pour les suivantes, alors il doit être possible de faire en sorte que cette image ne le soit plus. Dans ce cas, on se réfèrera à la référence précédente, ou à la première image de la série si aucune référence n'existe.

reduce database size

For now database contains a pickled version of pixel difference between 2 pictures
This can be huge (~20MB). Instead, store the PNG image mask which is created when difference is computed (~30 kB)

Improve admin filtering for variables

For now, admin filtering on variable view is the standard one
Improve it so that:

  • list of displayed version depends on selected application. If no application is selected, all variables are displayed. Versions are ordered. If no application is selected, no version displayed
  • list of environment depend on selected application
  • when user selects an environment, variables displayed include the variable of the generic environment and from all Environment. It should also be possible to select the "None" environment
  • as a bonus, allow to select multiple environment / applications

documentation is here: https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display_links

IHM: possibilité d'indiquer que l'image courante est la nouvelle référence

Lorsqu'on détermine que l'image courante est la nouvelle référence, toutes les comparaisons dépendant de l'ancienne référence sont recalculées pour cette étape
Attention à la gestion des références:

  • si aucune image n'existe comme référence à la création d'un snapshot, alors ce nouveau snapshot devient la référence pour l'étape de test (sur ce cas de test)
  • Comment renseigner la référence à laquelle une image se rapporte ? On peut passer par la table des différences
  • Les références doivent être gérées comme un arbre: sur une même version (branche), il est possible d'avoir plusieurs références. Toutes les images, prises après la référence pour cette version prennent comme référence la dernière disponible.
    En revanche, si une version intermédiaire est créée, alors la référence à prendre sera celle de la version immédiatement précédente. Cela ne modifiera en rien les références pour la version suivante.

Rendre l'enregistrement des images asynchrone

Actuellement, l'enregistrement des images implique le calcul des différences.
Or ce calcul peut prendre du temps (plusieurs secondes) ce qui ralentirait considérablement les tests
Il faut donc que le serveur fasse le calcul de manière asynchrone par rapport à l'upload de l'image:

  • soit un thread est lancé à l'enregistrement pour faire le calcul tout de suite, mais ne pas attendre la fin pour retourner une réponse au client
  • soit un thread du serveur se lance périodiquement pour regarder quelles sont les images qui n'ont pas de différence associée et les calcule

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.