[Bibliothèque PHP] AutoMate

Une bibliothèque d'automatisation utilisant le YAML

a marqué ce sujet comme résolu.

Bonjour à tous,

Je m’appelle Julien, j’ai 25 ans et je suis Ingénieur d’études et développement (développeur, en gros) pour une grande entreprise. Cela fait plus d’un an que j’ai terminé mes études, et près de 10 ans que je fais de la programmation de façon sérieuse et raisonnée. A la base, je développe en Java et j’ai redécouvert les joies de PHP avec mon travail, essentiellement avec Symfony 4/5 puis je me suis lancé dans le développement un peu moins web, mais toujours avec PHP. C’est un langage qui fait toujours couler beaucoup d’encre, mais je m’amuse beaucoup avec et la syntaxe et les mécaniques me conviennent parfaitement, alors "je le garde".

C’est avec beaucoup d’humilité et d’appréhention que je vous présente AutoMate.

Présentation d’AutoMate

Le nom AutoMate vient d’un jeu de mot entre Automation et Mate qui peut se traduire par "Pote", "Copain, "Equipier". Cela reflète bien l’objectif que je tente de remplir avec ce projet.

Pourquoi AutoMate ?

Dans mon entreprise, on utilise ce qu’on appelle des automates qui utilise Selenium et qui le détourne pour réaliser des actes de gestion. Le développement est donc basé sur Selenium et un framework "maison" en Java. Le développement actuel d’un nouvel automate (qui réalise des actes différents et nouveau) prend pas mal de temps à mettre en place et peuvent se compter sur plusieurs jours (dev, pré-prod/recettes, mise en prod) là où cela pourrait être moins chronophage.

AutoMate a pour vocation de résoudre ce problème en proposant un format de programmation simple et intuitif utilisant le YAML.

Comment cela fonctionne ?

Pour faire simple et grossier, AutoMate lit un fichier YAML qui décrit les étapes du scenario et les executes. Ce fichier se présente sous la forme suivante et permet d’écrire un scenario :

browser: chrome
variables:
  adresse: 'http://wikipedia.fr'
  subScenario: 'create-cookie'
scenario:
  steps:
    - go: '{{ scenario.adresse }}'
    - use: '{{ scenario.subScenario }}'
    - exit: 'Simple scenario juste go and exit'

Plusieurs exemples sont disponibles sur le Github : https://github.com/JuGid/AutoMate/tree/master/example/scenario

Il est aussi possible d’introduire des données dans le scenario en utilisant ce que j’ai appelé les Specifications. Ce sont des fichiers de données au format CSV qui stockent les données à introduire. Pour chaque ligne de cette spécification, le scenario redémarre depuis le début. Les variables sont utilisables via le périmètre 'spec' go: '{{ spec.variable }}'variable correspond au nom dans l’en-tête du CSV.

Outre cette mécanique de specification, AutoMate a la possibilité de ressortir des Logs lorsqu’il tourne avec des specifications. Ces logs sont des fichiers CSV qui reprennent les données de specification utilisées et ajoute un message d’erreur ou de reussite (AutoMate génère des LOG_WINS et des LOG_ERRORS liés à la specification)

Exemple de specification
url,cookiename
http://youtube.fr,youtube
http://google.fr,google
http://github.com,github
Exemple de logs 'wins’
url,cookiename,message
http://youtube.fr,youtube,"Finished with success."
http://google.fr,google,"Finished with success."
http://github.com,github,"Finished with success."
Lancer AutoMate

Comme je le disais, AutoMate est une librarie. C’est un souhait de ne pas en faire ce que composer appelle un "projet" pour qu’il puisse être intégré partout. Il est donc possible de le lancer en utilisant du code, très simple :

<?php
require __DIR__.'/../vendor/autoload.php';

use Automate\AutoMate;

$configFile = __DIR__.'/config/config-test.yaml';
$autoMate = new AutoMate($configFile);
$autoMate->run('simple');

Différentes options sont disponibles pour lancer les scenarios.

Aussi, pendant l’execution, AutoMate décrit l’ensemble des étapes qu’il execute (programmatiquement parlant, ce sont les étapes qu’il A éxecuté) pour un rendu qui est celui-ci, un peu comme Selenium au final :

AutoMate Screenshot
AutoMate Screenshot

Phase de développement

Actuellement, AutoMate est toujours en développement (v0.3.0) mais permet déjà de construire des scenarios qui peuvent utiliser des conditions, des boucles ou encore des scenarios réutilisables. J’essaye de construire une roadmap petit à petit, et plus tard pourquoi pas, en fonction des retours. Je copie/colle la roadmap disponible sur le Github

Roadmap

  • Provide a Proxy management
  • Possibility to import a scenario for reusability
  • Firefox Profile
  • Add a command ajax and js to work with ajax/js
  • Tell us your ideas ! You can directly send a PR or open an issue

La documentation (Wiki Github) est en cours d’élaboration. J’ai pour espoir de créer une interface par la suite avec un ordonnanceur pour la création des automates et la configuration d’AutoMate (d’où la dépendance Symfony/console, mais qui risque de disparaitre au profit de plus léger)

Liens

Plusieurs liens qui peuvent être utiles concernant le projet :

Je ne sais pas si ce sujet sucitera de l’intéret mais j’espère qu’il y aura tout de même quelques retours/critiques et encouragements pour le développement de ce projet. J’essaye aussi d’intégrer quelques design pattern et d’améliorer le code au fur et à mesure des commits. N’hésitez pas d’ailleurs à participer !

En vous souhaitant une bonne journée,

JuGid

Hello!

Stylé ton projet ! J’trouve ça top de venir présenter ta lib ici. Je ne vois aucun cas d’utilisation pour moi mais bon c’est grave intéressant quand même ^^ .

(en fait le seul use case que je vois pour moi c’est les tests mais je suis plutôt team behat)

Félicitations en tous les cas :) . (et ça me donne envie de présenter une lib aussi du coup !)

Salut Nek,

Merci beaucoup de ton retour. Ton enthousiasme me fait grave plaisir ! :D

C’est vrai qu’il y a Behat comme "conccurent". Je l’ai jamais personnellement utilisé et ça a l’air vraiment bien pour les tests.

A la base, et je pense qu’on le voit car c’est pas super au point, je ne me suis pas orienté tests. D’ailleurs ton message me permet de le dire : AutoMate est à la base orienté "création de scenario répétitifs avec des données qui changent" (d’ailleurs je parle de 'Line' pas de 'Test’, de WINS/ERRORS et non de 'OK/KO’, c’est un langage voulu). Cela dit, c’est clairement un use case possible mais Behat sera surement plus performant dans ce sens.

Merci encore pour ton message, et vas-y fonce et montre nous ta library ! :P

+1 -0

Bonjour à tous,

J’ai fait quelques ajouts ces 24 dernières heures avant la sortie d’une version 0.4.0 et je pense sortir une version 1.0.0 d’ici peu de temps en alpha dans un premier temps.

Voici les quelques petits changements. Ils sont en anglais car je souhaite faire une bibliothèque la plus universelle possible. Cela inclut surement des petites fautes :

Added
  • Script command to use javascript in your scenario (script)
  • Wajax command to wait an ajax request (wajax)
  • Configuration command to change some configuration elements at run time (configuration)
  • ErrorHandler to handle errors and render it on Console
Changed
  • Functions that wait() now use the configuration wait. Configuration::get('wait.for') and Configuration::get('wait.every')
  • If testMode is enable, the errors are rendered with colors and details
Fixed
  • Commands that use wait()->until() now have an error message to show what was wrong

Et au niveau de la roadmap, elle change peu :

Roadmap
  • Provide a Proxy management
  • Possibility to import a scenario for reusability
  • Firefox Profile
  • Add a command ajax and js to work with ajax/js
  • Add a configuration command to change configuration at runtime
  • Add a submit command to submit forms
  • Tell us your ideas ! You can directly send a PR or open an issue

Voilà pour les nouveautés. AutoMate s’enrichie un peu plus et j’obtient une version qui me convient plutôt bien.

Si quelqu’un connait un moyen de faire du test fonctionnel un peu comme SauceLabs, je suis preneur. Je suis actuellement obligé de lancer mes propres scenarios de test. Ca se tient vu l’objectif de AutoMate, mais un autre outils serait le bienvenue

Si quelqu’un connait un moyen de faire du test fonctionnel un peu comme SauceLabs, je suis preneur. Je suis actuellement obligé de lancer mes propres scenarios de test. Ca se tient vu l’objectif de AutoMate, mais un autre outils serait le bienvenue

J’ai pas compris. 🧐 SauceLabs utilise selenium non ?

Si quelqu’un connait un moyen de faire du test fonctionnel un peu comme SauceLabs, je suis preneur. Je suis actuellement obligé de lancer mes propres scenarios de test. Ca se tient vu l’objectif de AutoMate, mais un autre outils serait le bienvenue

J’ai pas compris. 🧐 SauceLabs utilise selenium non ?

Nek

Il me semble oui, mais ça permet surtout de lancer les tests via PHPUnit (ça je peux le faire avec AutoMate) avec un rendu visible des actions réalisées (ça je ne peux pas à la manière de Saucelabs). Et comme je ne sais pas si AutoMate est légitime en terme de tests, j’aimerai utiliser autre chose (Cela dit, PHPUnit se test avec lui-même). J’avoue être débutant dans les tests, ce n’est vraiment pas une passion pour moi à la base. Et je ne sais pas comment bien réaliser des tests fonctionnels. Dans mon cas, cela revient à tester un scenario, avec des specifications, des logs et de pouvoir isoler chaque commande.

+0 -0

Bonjour tout le monde,

Automate évolue un peu moins maintenant mais évolue tout de même. Surtout les travaux qui sont autours d’AutoMate en fait !

J’ai sortie la version 0.4.0 et 0.4.1 ces derniers jours dont voici les changelogs :


[0.4.1] - 28/02/2021

Fixed
  • Scenario reset the variable scope each time you call the constructor

[0.4.0] - 27/02/2021

Added
  • Script command to use javascript in your scenario (script)
  • Wajax command to wait an ajax request (wajax)
  • Configuration command to chage some configuration elements at run time (configuration)
  • ErrorHandler to handle errors and render it on Console
Changed
  • Functions that wait() now use the configuration wait. Configuration::get('wait.for') and Configuration::get('wait.every')
  • If testMode is enable, the errors are rendered with colors and details (simple and specification scenarios)
  • Configuration permit to test if it is loaded or not
  • Remade ErrorHandler to handle errors from scenario with specification and simple scenario. Error rendering should be render by an ErrorPrinter and not the ErrorHandler itself. This should change in future. Error handler now handle every errors.
Fixed
  • Commands that use wait()->until() now have an error message to show what was wrong
  • Use command detect if there is a potential loop
  • Configuration throw Exception if config is null or not loaded

Des changements qui sont très importants pour AutoMate, surtout ce ErrorHandler qui permet de récupérer et retourner toutes les erreurs et de les afficher ensuite.

Autour de ce projet, je travail sur un vrai outils de test, étant donné qu’AutoMate va évoluer plus lentement. Cette outils englobe AutoMate, je l’ai donc appelé AutoMate-test tout bêtement.

Cet outils permettra de créer des Tests un peu comme php-unit puis de les lancer facilement. Aujourd’hui, AutoMate-test n’est pas fonctionnel mais je peux tout de même présenter un example de test lançable que j’ai imaginé.

public function testShouldSeeIfAutomateTestWorksWithAutomateBuilder() {
   return $this->createTestBuilder('scenario')
               ->withAutomateConfigurationFile(self::CONFIG_FILE)
               ->shouldThrowError(TimeoutException::class)
               ->printOptionsAtEnd()
               ->build();
}

Comme ce sont des tests plutôt fonctionnels (ou d’UI) j’ai choisi de permettre aux utilisateurs de créer des tests par un builder très simple et en mettant à disposition quelques options.

Ce dernier projet va servir surtout à me former plus en profondeur sur la réalisation des tests. J’explore le code source de php-unit, et je m’en inspire sans en copier/coller les éléments.

Aussi, le code est visible sur GitHub ) cette adresse : https://github.com/JuGid/AutoMate-tests

Voilà pour les quelques news sur AutoMate et, maintenant, ses dérivés !

Bonne soirée

Pas un zeste !

Une grosse nouveauté sur AutoMate : il utilise maintenant le design pattern Observer pour renvoyer différents évènements. Cela va permettre aux utilisateurs de créer leurs propres transformer !

Les différents évènements

Voici les différents évènements qui sont actuellement envoyés en utilisant un scenario très simple : il va sur wikipedia, créé un cookie et sort du scenario en renvoyant un message d’erreur.

Event : core:runner:simple:begin
____________________________________________________________
    /\        | |      |  \/  |     | |      
   /  \  _   _| |_ ___ | \  / | __ _| |_ ___ 
  / /\ \| | | | __/ _ \| |\/| |/ _` | __/ _ \ 
 / ____ \ |_| | || (_) | |  | | (_| | ||  __/ 
/_/    \_\__,_|\__\___/|_|  |_|\__,_|\__\___| 
____________________________________________________________
Event : core:step:transform
Go at adresse http://wikipedia.fr
Event : core:step:transform
Create a cookie with cookieName:cookieValue
Event : core:step:transform
Event : core:runner:error
The scenario exit with message : Simple scenario just go and exit
============================================================
[0] The scenario exit with message : Simple scenario just go and exit
============================================================
Event : core:runner:simple:end
Event : core:runner:end:error

On voit ici les différents évènements qui sont envoyés. Le détail est disponible sur la page dédiée aux évènements sur le Wiki. Je ne vais donc pas détailler l’utilisation de son propre transformer, mais rapidement, ça ressemble à ça :

<?php 

require __DIR__.'/../vendor/autoload.php';

use Automate\AutoMate;
use Automate\AutoMateEvents;
use MyNamespace\MyTransformer;

$configFile = __DIR__.'/config/config-test.yaml';
$autoMate = new AutoMate($configFile);
$autoMate->registerPlugin(AutoMateEvents::STEP_TRANSFORM, new MyTransformer());
$autoMate->run('simple');

Changelogs

Voici les derniers changelogs, très peu de choses mais pas mal de travail d’architecture au final.

[0.5.0] - COMING

Added
  • Submit command to fill then submit an element
  • AutoMate now use an EventDispatcher that trigger some events See here
Changed
  • Use command does not detect loop anymore as a condition can make the scenario change
Fixed
  • Scenario can now reset or not the scope. When using use, the Scenario variable scope is not reset.
  • When AutoMate runs, the World variable scope is reset.
  • Use command now use the good scenario.

A savoir que les commandes use, loopet condition ne sont plus disponible pour le moment. Il vaut mieux utiliser la dernière release 0.4.1, mais les évènements ne sont pas disponibles.

AutoMate-tests

Pour l’instant, ça a très peu avancé. Je me concentre sur le coeur du projet. Mais cela reviendra bientôt pour le lancement de cas de tests concrets.

Roadmap

Et comme d’habitude, la roadmap :

  • Add a submit command to submit element
  • Find a way to use keyboard (Keyboard command)
  • Find a way to use the mouse (Mouse command)
  • New command to work with tables
  • Create your own commands (AbstractTransformer)
  • Tell us your ideas ! You can directly send a PR or open an issue

Voilà pour les news sur AutoMate. Je reviens d’ici quelques jours pour vous annoncer que ces commandes sont de retour, et quand sera prévue la version 0.5.0.

Bonne soirée,

+0 -0

Bonjour Nek,

Effectivement, j’y passe beaucoup de temps (à tester, concevoir, penser à la suite, et écrire le code). La raison c’est que ça me permet de prendre un peu de recul sur mon travail et ça fait du bien. J’ai aussi un potentiel besoin qui se présente à moi bientôt (on verra), alors j’aimerai qu’il soit le plus complet possible. Et puis avant tout, ça me permet de comprendre toujours un peu plus le langage, son code source, etc.

J’aime bien ce projet alors effectivement, je ne m’arrète pas :P

Bonjour à tous,

Je suis toujours là et toujours sur le développement de AutoMate. Je voulais attendre une release majeure avant de publier mon message. Et autant dire que ça a bien avancé de mon côté.

Tout d’abord, voici les derniers Changelogs

Changelogs

[0.5.0] - 12/03/2021

Added
  • Submit command to fill then submit an element
  • Keyboard command to simulate keyboard
  • Mouse command to simulate mouse
  • Print command to print a text in the console
  • Form command to make actions on forms
  • AutoMate now use an EventDispatcher that trigger some events See here
  • Chromedriver can run in headless mode. Geckodriver coming soon with php-webdriver update.
  • New option before to clear the content for Fill command
  • Checkboxes and Radios support in Select command
Changed
  • Use command does not detect loop anymore as a condition can make the scenario change
  • You can register plugins on multiple events AutoMate::registerPlugin(AutoMateListener $listener) if your listener implements AutoMateListener::onEvent() and return an array.
  • If you call a non existent command, Runner throw a CommandException, AutoMate returns en error in handler.
  • Wiki is not empty anymore
  • The active window is always the last opened window. When closing window, the webdriver switch to the last window using the WindowHandler previous windows queue.
  • Alert new pattern to support sendKeys type
Fixed
  • Scenario can now reset or not the scope. When using use, the Scenario variable scope is not reset.
  • When AutoMate runs, the World variable scope is reset.
  • Frame command can now return to default content
  • Use command now use the good scenario.
  • textIs, textContains, textMatches work now
  • Fixed a bug that throw an error when the GetTransformer set the World variable
  • The webdriver always switch to the new window so you can click and create without getting errors.

Enormement de nouveautés et de fix. Vous n’allez pas tout lire alors voici les nouveaux éléments importants

Récapitulatif

  • Nouvelles commandes Submit, Keyboard, Mouse, Print, et Form
  • Le support des checkbox et des boutons radio
  • Les event listeners ont changé et doivent implémenter la méthode onEvent() pour souscrire à des évènements.
  • Le headless mode quand on utilise chrome.
  • Nouvelles exceptions pour plus de sécurité d’execution
  • Mise à jour du Wiki (la documentation est complète mais pas encore complètement à jour)

Voilà globalement les nouveautés. On notera aussi une petite refonte graphique côté console que vous pouvez voir sur le Github

Roadmap

Les prochaines étapes seront :

  • D’harmoniser les patterns des différentes commandes
  • De terminer mes tests fonctionnels "maison" visibles ici (self testing)
  • La sortie de plusieurs fix sur la 0.5 avant une version finale, pourquoi pas, en 1.0.0

Maintenant, l’idée est de me concentrer sur Automate-test et je commence à penser à une GUI pour l’utilisation simplifiée et la creation de scenario elle aussi simplifiée. J’aimerai recueillir vos avis sur ce dernier point.

C’est un peu une news indigeste, j’en ai bien conscience mais n’hésitez pas à vous intéresser au projet, à contribuer, à proposer vos idées, ou même à l’essayer. Une petite 'star' aussi pour soutenir la visibilité du projet peut elle aussi aider !

Merci à ceux qui lisent ces messages.

Bonne soirée !

+0 -0

Bonsoir,

Cela fait quelques jours que je n’ai pas posté ici mais AutoMate avance doucement. J’ai peu de changements à faire actuellement et les idées sont les bienvenues (les tests aussi). Il y a eu entre temps une version 0.6.0, un fix 0.6.1 et une version est en préparation : 0.7.0. Elle semble être très proche d’une release majeure 1.0.0.

Voici les changelogs des ces dernières version :

Changelogs

[0.7.0] - COMING

Added
  • Possibility to create pages to reuse any element you defined
  • PageHandler to handle page elements
  • Page command to load the page in pageHandler
  • New PrintListener catch events to print what is needed
Changed
  • Patterns are in harmony (syntax respects some standards)
  • Verbose mode is now in three possibilities VERBOSE_ALL, VERBOSE_REPORT_ONLY, VERBOSE_NONE;

[0.6.1] - 15/03/2021

Changed
  • AutoMateError stores the Exception class

[0.6.0] - 15/03/2021

Added
  • New verbose mode true/false. Tell automate if Console could write text or not. If in test mode, the report is always printed.
  • New event AutoMateEvents::STEP_TRANSFORM_END
Changed
  • PrintListener is use to conditionnally use Console class
Fixed
  • AutoMate dispatch end events (core:runner:simple:end, core:runner:spec:end) as it should.

Les majeurs ajouts sont le mode de verbose et la possibilité de créer des pages pour réutiliser les éléments et ainsi éviter de les redéfinir à chaque fois. Les pages, c’est vraiment très pratique !

Wiki

J’ai fait en sorte d’avoir un Wiki à jour pour la version en cours. Il est disponible à l’adresse https://github.com/JuGid/AutoMate/wiki et permet d’avoir un aperçu complet d’AutoMate. Si ça peut aider :)

AutoMate-tests

A venir, j’ai peu d’idées d’améliorations. J’avance notamment sur AutoMate-test qui permet de réaliser des tests fonctionnels. Aprsè avoir créé le scenario, on peut définir un test comme ceci :

class AutomateExampleTest extends AutoMateTest {

    const CONFIG_FILE = __DIR__.'/../config/config-test.yaml';

    public function testShouldTestSimpleScenario() {
        return $this->createTestBuilder('simple')
                    ->withAutomateConfigurationFile(self::CONFIG_FILE)
                    ->repeatTestFor(4)
                    ->shouldThrowError(InvalidArgumentException::class)
                    ->shouldThrowMessage('Title is not Youtube')
                    ->printOptionsAtEnd();
    }
}

Ces tests génèrent un rapport d’erreurs en console et il est prévu de générer des rapports fichiers. Et j’ai prévue d’ajouter des annotations pour utiliser un TestBuilder de base pour éviter de redéfinir le fichier de configuration ou les Exception retournées.

Conclusion

Je n’ai pas de roadmap claire à présenter car comme je l’ai dit, j’ai peu d’idées. Cela devrait revenir d’ici peu mais déjà, la sortie d’une v1.0.0 sera une bonne chose.

Le GitHub est toujours disponible : https://github.com/JuGid/AutoMate

+0 -0

Bonjour,

La release 0.7.0 est sortie ce soir avec les mêmes changelogs que sur le message précédent.

La prochaine version 0.8.0 permettra d’ajouter des scripts PHP personnels et de les utiliser directement dans AutoMate. Le but de ces scripts n’est pas de modifier l’état du WebDriver mais de créer une logique autour des variables enregistrées (comme valider la continuité du scenario, etc)

A bientot !

Hello Nostalgique !

Merci beaucoup pour ce commentaire que j’apprécie beaucoup !

Concernant le code coverage, pour moi ce n’est qu’un indicateur. Je crois que mes tests ne sont pas foufous en réalité, il me faudrait des reviews à ce niveau là.

En tout cas n’hésite pas à participer. Ce sera avec grand plaisir :D Et merci encore pour ton commentaire !

Bonjour !

Je reviens vers vous après un week end pù je n’ai pas avancé dutout. Et c’est ce soir que j’ai principalement débuggué, fait des tests fonctionnels (enfin je m’y met vraiment). J’auto-test AutoMate qui semble quand meme assez robuste, a voir sur la longueur.

J’ai ajouté ce que j’appelle des Logics. C’est reservé à un public qui connait PHP et l’idée est d’implémenter des conditions plus complexes basées sur les variables d’environnements (World, spec, scenario).

Globalement - je vous passe les besoins de configuration - , il faut étendre la classe Logic et implémenter la méthode public function answeredBy() : bool. Une fois fait, on peut l’utiliser pour des conditions avec une définition comme celle-ci :

condition:
  #myLogics correspond a la configuration du namespace
  #MyPersonnalLogic à la classe étendue de Logic utilisée
  logic: myLogics.MyPersonnalLogic 
  correct:
    steps:
      [...]
  incorrect:
    steps:
      [...]

Voilà pour le dernier ajout. Je me concentre principalement sur les tests fonctionnels pour l’instant. Mais je vous met les Changelogs tout de même, pour ceux que ça intéresse.

[0.8.0] - COMING

Added
  • User can log any message in log files with command log
  • Logic class to create some external business logic when you use AutoMate for repetitive tasks
  • LogicExecutor to execute and get the answer of the logic (this is what the LogicTansformer use)
  • log command to add message to log files
Changed
  • When dispatcher notify for STEP_TRANSFORM event, it now sends the logger.
  • condition pattern. IfTrue, IfFalse => correct, incorrect
  • Configuration for logics namespaces and valueAtException (false as default value).
  • VariableRegistry now precise in the error message that the variable can be not set.
  • print nom only print only the text and not 'Text printed' after the print
Fixed

Now working :

  • resize
  • textContains
  • textIs
  • textMatches

Oh, et j’ai mit à jour le wiki (il est tout beau maintenant), et je prépare un tutoriel pour ceux qui ne sont pas trop à l’aise avec PHP afin d’installer et d’utiliser AutoMate. :D

A bientôt !

+0 -0

Bonjour,

Sortie de la version 0.8.0 pour ce premier avril ! Les nouveautés ne sont pas énormes mais apportent une plus grande flexibilité, notamment les Logics qui permettent des conditions évoluées et les pages pour réutiliser les différents éléments à détecter.

Cette version 0.8.0 restera comme ça pendant un petit bout de temps car je ne vois pour le moment rien d’autre pour améliorer AutoMate. Je verrai en fonction de mon utilisation. En tout cas n’hésitez pas à faire vos retours :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte