View Issue Details

IDProjectCategoryView StatusLast Update
0001116Common[All Projects] Generalpublic2016-04-17 23:29
ReporterXenosAssigned ToXenos 
PrioritylowSeverityfeatureReproducibilityN/A
Status CloseResolutionfixed 
Product Version1.0.4 
Target VersionFixed in Version1.3.0 
Summary0001116: Pouvoir accéder aux mails depuis un test Selenium
DescriptionL'idée serait de permettre à Selenium de lire les mails que FakeSMTP a reçus. Ainsi, je pourrai m'assurer que les mails partent bien, qu'ils ont bien les bonnes données et les bons destinataires, et je pourrai même pousser jusqu'à trouver comment récupérer des données des mails (exemple: récupérer l'URL du mail d'inscription).

A voir s'il faut passer par un shell script, lancé par Selenium, ou s'il vaut mieux créer un fichier PHP avec une adresse local type "common.localhost/selenium/get-mail" qui ferait la recherche de mail et en renverrait le contenu, en-têtes incluses.
TagsNo tags attached.
Attach Tags

Relationships

parent of 0001115 CloseXenos Rédiger les tests Selenium en XML 

Activities

Xenostom

Xenostom

2016-04-05 14:27

developer   ~0001689

Est-ce qu'il ne suffirait pas de créer un domaine (mails.localhost) qui pointe sur le dossier dans mails de fakeSMTP (.../common/.../fakeSMTP/emails), et Selenium n'aurait alors plus qu'à se rendre sur cette page, ouvrir le dernier mail, et parser son contenu?
Xenostom

Xenostom

2016-04-07 18:33

developer   ~0001698

Last edited: 2016-04-17 23:29

Avec mailparse ( http://pecl.php.net/package/mailparse ), cela devrait être simple. Il me suffira de créer un fichier PHP "query.php" capable de traiter la demande de Selenium et de retourner le résultat attendu (avec, pourquoi pas, une boucle d'attente si jamais le mail n'est pas arrivé).

Donc, je ne pourrai coder cela que lorsque j'aurai rencontré un cas d'utilisation réel, pour savoir ce qu'il me faut récupérer du mail. Le PHP est actuellement capable de parser le fichier EML (grâce à MailParse), et je peux donc soit lui faire retourner une "version XML" (ou HTML) du mail, et laisser Selenium faire ses checks en aval, soit faire en sorte que Selenium demande au script PHP une info précise qu'il va lui retourner.

Dans un premier temps, je pense que créer un "get-last-mail-html-body.php" suffirait. L'idée serait que ce script PHP me retourne le body HTML du dernier mail reçu, si celui-ci est bien un HTML.
Xenostom

Xenostom

2016-04-07 19:07

developer   ~0001699

Last edited: 2016-04-17 23:29

Finalement, j'ai procédé ainsi:
• Un script query.php permet d'aller demander des infos sur les mails ou sur un mail
• Selenium n'a plus qu'à se rendre sur la page correspondant au query.php pour récupérer les informations d'un mail

Les paramètres de query.php sont:
• retrieve = headers|body|count, pour récupérer la liste (imbriquée) des meta-données du mail ciblé ou pour récupérer le corps du mail ciblé (le content-type de la page sera celui récupéré dans le mail) ou pour récupérer le nombre total de mails (page text/plain avec juste le nombre total)
• skip = {int} permet optionnellement de zapper les N derniers mails. Le "mail ciblé" est alors le N-eme mail reçu. Si non précisé, le mail ciblé est le dernier mail reçu

Selenium peut alors faire ses tests une fois le mail récupéré.

En cas de problème, une erreur HTTP 4xx est levée (si aucun mail n'est reçu, si on a oublié un paramètre etc).

Issue History

Date Modified Username Field Change
2016-04-02 20:53 Xenos New Issue
2016-04-02 20:53 Xenos Status New => Accepted
2016-04-02 20:53 Xenos Priority normal => low
2016-04-04 16:40 Xenostom Relationship added parent of 0001115
2016-04-05 14:27 Xenostom Note Added: 0001689
2016-04-07 18:17 Xenostom Assigned To => Xenostom
2016-04-07 18:17 Xenostom Status Accepted => In progress
2016-04-07 18:33 Xenostom Note Added: 0001698
2016-04-07 19:07 Xenostom Note Added: 0001699
2016-04-07 19:07 Xenostom Status In progress => Ready
2016-04-07 19:07 Xenostom Resolution open => fixed
2016-04-08 21:08 AutoUpdater Assigned To Xenostom => Xenos
2016-04-08 21:08 AutoUpdater Status Ready => Resolved
2016-04-08 21:08 AutoUpdater Fixed in Version => 1.2.0
2016-04-08 21:29 Xenos Status Resolved => Close
2016-04-17 23:29 AutoUpdater Fixed in Version 1.2.0 => 1.3.0