Skip to content

Commit 2fcfd9e

Browse files
committed
PARAF-166: Updated robotframework tests to include electronic signature
1 parent b9b53cf commit 2fcfd9e

2 files changed

Lines changed: 220 additions & 7 deletions

File tree

CHANGES.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ Changelog
44
3.1.6 (unreleased)
55
------------------
66

7-
- Nothing changed yet.
8-
7+
- Updated robotframework tests to include electronic signature.
8+
[chris-adam]
99

1010
3.1.5 (2026-06-19)
1111
------------------

imio/dms/mail/tests/robot/doc.robot

Lines changed: 218 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ Suite Teardown Close all browsers
1414

1515
#${BROWSER} = GoogleChrome
1616
${SELENIUM_RUN_ON_FAILURE} = Debug
17+
# Delay (seconds) added after each Selenium action. Override to watch a run, e.g. -v SELENIUM_SPEED:1.0
18+
${SELENIUM_SPEED} = 0.2
1719

1820
*** Test Cases ***
1921

@@ -194,6 +196,7 @@ CE numerisation
194196
Select from list by value id=form-widgets-original_mail_date-day 6
195197
Select from list by value id=form-widgets-original_mail_date-month 6
196198
Select from list by value id=form-widgets-original_mail_date-year 2012
199+
Select checkbox id=form-widgets-send_modes-0
197200
Capture and crop page screenshot doc/utilisation/2-2-1-edition-courrier-fini.png id=content
198201
Click button id=form-buttons-save
199202
Sleep 2
@@ -324,6 +327,7 @@ CS en réponse
324327
Set field value ${UID} recipient_groups ['${DF}'] list
325328
Set field value ${UID} assigned_user agent str
326329
Set field value ${UID} external_reference_no 2017/ESB/00123 str
330+
Set field value ${UID} send_modes ['post'] list
327331
Go to ${PLONE_URL}/${im_path}/edit
328332
Click button id=form-buttons-save
329333
Fire transition ${UID} propose_to_n_plus_1
@@ -367,7 +371,7 @@ CS en réponse
367371
Sleep 1
368372
Wait until element is visible css=.DV-pageImage 10
369373
Capture and crop page screenshot doc/utilisation/2-3-1-cs-3-ged-genere.png id=content
370-
${note52} Add pointy note css=#fieldset-versions tr.selected td:nth-child(3) Édition externe position=top color=blue
374+
${note52} Add pointy note css=#fieldset-versions tr.selected a.apButtonAction_form_external_edit Édition externe position=top color=blue
371375
Capture and crop page screenshot doc/utilisation/2-3-1-cs-3-ged-edition-externe.png css=#fieldset-versions table ${note52}
372376
Remove element id=${note52}
373377
Delete content /plone/${om_path}/012999900000001
@@ -392,10 +396,10 @@ CS en réponse
392396
Sleep 1
393397
Wait until element is visible css=.DV-pageImage 10
394398
Capture and crop page screenshot doc/utilisation/2-3-1-cs-4-ged-genere-non-pub.png id=content
395-
${note55} Add pointy note css=#fieldset-versions tr.selected td:nth-child(6) Publipostage position=top color=blue
399+
${note55} Add pointy note css=#fieldset-versions tr.selected a.apButtonAction_form_mailing Publipostage position=left color=blue
396400
Capture and crop page screenshot doc/utilisation/2-3-1-cs-4-ged-publipostage.png css=#fieldset-versions table ${note55}
397401
Remove element id=${note55}
398-
Click element css=#fieldset-versions tr.selected td:nth-child(6)
402+
Click element css=#fieldset-versions tr.selected a.apButtonAction_form_mailing
399403
Sleep 5
400404
Go to ${PLONE_URL}/${om_path}
401405
Sleep 1
@@ -488,8 +492,11 @@ CS nouveau
488492
Click button id=form-buttons-save
489493
# Set field value ${UID} email_body <meta charset="UTF-8"><p>Bonjour Monsieur,</p><p>Vous trouverez en pièce jointe un document concernant la réfection des trottoirs dans votre rue.</p><p>Cordialement</p><p>&nbsp;</p><p><span style="font-size:large;font-family:Quicksand,Arial">Fred Agent</span></p><p>&nbsp;</p><div style="float:left;"><div style="font-size:small; float:left;clear:both;width:350px"><span>Agent Voiries</span><br /><span>Direction technique</span><br /><span>Voiries</span><br /><a href="mailto:fred.agent@macommune.be" style="display: inline-block; padding-top: 1em;" target="_blank">fred.agent@macommune.be</a><br /><span>012/34.56.70</span><br /><span style="display: inline-block; padding-top: 0.5em;">Rue de la commune, 1</span><br /><span>0010 Ma ville</span><br /></div><div style="float:left;display: inline-grid;"><a href="" target="_blank"><img alt="" src="/++resource++imio.dms.mail/belleville.png" /></a><br /><span style="font-size:small;text-align: center;">Administration communale de Belleville</span></div><p>&nbsp;</p><div style="font-size: x-small;color:#424242;clear:both"><br />Limite de responsabilité: les informations contenues dans ce courrier électronique (annexes incluses) sont confidentielles et réservées à l'usage exclusif des destinataires repris ci-dessus. Si vous n'êtes pas le destinataire, soyez informé par la présente que vous ne pouvez ni divulguer, ni reproduire, ni faire usage de ces informations pour vous-même ou toute tierce personne. Si vous avez reçu ce courrier électronique par erreur, vous êtes prié d'en avertir immédiatement l'expéditeur et d'effacer le message e-mail de votre ordinateur.</div> text/html
490494
# Go to ${PLONE_URL}/${om_path}
495+
Set Window Size 1300 2200
491496
Wait until element is visible css=#viewlet-below-content-body table.actionspanel-no-style-table 10
492497
Capture and crop page screenshot doc/utilisation/2-3-4-cs-email-visualisation.png css=table.actionspanel-no-style-table id=fieldset-versions id=form-groups-email
498+
# Restore window size
499+
Set Window Size 1200 1920
493500
# Click element css=input.apButtonAction_sendemail # not working on test env
494501

495502
CS depuis le scanner
@@ -1151,7 +1158,7 @@ Gestion modèles
11511158
Wait until element is visible form-widgets-merge_templates 10
11521159
Update element style css=#formfield-form-widgets-pod_portal_types display None
11531160
${note43} Add pointy note css=#form-widgets-merge_templates tbody tr:first-child td:nth-last-child(2) Ajouter ou supprimer des sous-modèles position=left color=blue
1154-
${note44} Add pointy note css=#form-widgets-merge_templates-4-widgets-template Choisir le sous-modèle à fusionner position=bottom color=blue
1161+
${note44} Add pointy note css=#form-widgets-merge_templates tr.auto-append [id$=-widgets-template] Choisir le sous-modèle à fusionner position=bottom color=blue
11551162
Capture and crop page screenshot doc/utilisation/2-10-2-fusion-sous-modeles.png css=#form-widgets-merge_templates id=${note44}
11561163
Remove element id=${note43}
11571164
Remove element id=${note44}
@@ -1379,6 +1386,168 @@ Annexes dossiers
13791386
Go to ${PLONE_URL}/folders/
13801387
Click Element css:.pretty_link_content.state-active
13811388

1389+
Signature écrite
1390+
# partie 2.13.1 Mise à la signature manuscrite
1391+
[TAGS] RUN2131
1392+
Activate esigning
1393+
Enable autologin as encodeur
1394+
Show connected user Jean Encodeur (service encodeur) 2-13-1-user-encodeur.png
1395+
${om_path} = Add outgoing mail for signing Décision de voirie à signer manuellement
1396+
${UID} = Path to uid /${PLONE_SITE_ID}/${om_path}
1397+
# Signataires : préremplis par les règles de signature (configuration administrateur) :
1398+
# Directeur Général (utilisateur "dirg") et Bourgmestre, tous deux SANS approbation et SANS
1399+
# signature électronique.
1400+
Wait until element is visible css=#viewlet-below-content-body table.actionspanel-no-style-table 10
1401+
Wait until element is visible id=form-groups-signing 10
1402+
${note1} Add pointy note id=formfield-form-widgets-ISigningBehavior-signers Signataires (sans approbation) position=top color=blue
1403+
Capture and crop page screenshot doc/utilisation/2-13-1-signataires.png id=form-groups-signing ${note1}
1404+
Remove element id=${note1}
1405+
${note2} Add pointy note id=formfield-form-widgets-ISigningBehavior-esign Signature électronique désactivée position=top color=blue
1406+
Capture and crop page screenshot doc/utilisation/2-13-1-signature-electronique-off.png id=form-groups-signing ${note2}
1407+
Remove element id=${note2}
1408+
# Génération d'un fichier ged depuis un modèle
1409+
Capture and crop page screenshot doc/utilisation/2-13-1-generation-modele.png css=#parent-fieldname-title span.pretty_link_content
1410+
${TPL} = Path to uid /${PLONE_SITE_ID}/templates/om/main
1411+
Go to ${PLONE_URL}/${om_path}/persistent-document-generation?template_uid=${TPL}&output_format=odt
1412+
Sleep 2
1413+
Go to ${PLONE_URL}/${om_path}
1414+
Sleep 1
1415+
Wait until element is visible css=.DV-pageImage 10
1416+
Capture and crop page screenshot doc/utilisation/2-13-1-courrier-genere.png id=content
1417+
# Mise à la signature manuscrite (état "to_be_signed").
1418+
# created -> to_be_validated (encodeur) -> to_be_signed (chef)
1419+
Fire transition ${UID} propose_to_n_plus_1
1420+
Enable autologin as chef
1421+
Fire transition ${UID} propose_to_be_signed
1422+
Go to ${PLONE_URL}/${om_path}
1423+
Sleep 0.5
1424+
Wait until element is visible css=.DV-pageImage 10
1425+
Show connected user Michel Chef (responsable de service, n+1) 2-13-1-user-chef.png
1426+
Capture and crop page screenshot doc/utilisation/2-13-1-a-la-signature.png css=div.viewlet_workflowstate css=table.actionspanel-no-style-table
1427+
# Scan step not automatable in RF: auto-transition to sent requires physical scan.
1428+
${note4} Add pointy note css=div.viewlet_workflowstate Numérisation du document signé (scan papier) puis envoi position=bottom color=blue
1429+
Capture and crop page screenshot doc/utilisation/2-13-1-etape-numerisation.png css=div.viewlet_workflowstate ${note4}
1430+
Remove element id=${note4}
1431+
1432+
Signature électronique
1433+
# partie 2.13.2 Mise à l'approbation et signature électronique
1434+
[TAGS] RUN2132
1435+
Activate esigning
1436+
Enable autologin as encodeur
1437+
Show connected user Jean Encodeur (service encodeur) 2-13-2-user-encodeur.png
1438+
${om_path} = Add outgoing mail for signing Décision de voirie à signer electroniquement
1439+
${UID} = Path to uid /${PLONE_SITE_ID}/${om_path}
1440+
# Édition du panneau de signature. Les signataires (Directeur Général + Bourgmestre) ont été
1441+
# préremplis par la configuration administrateur (règles de signature).
1442+
Wait until element is visible css=#viewlet-below-content-body table.actionspanel-no-style-table 10
1443+
# Clic sur l'icône d'édition présente dans la légende du fieldset "Signature"
1444+
Wait until element is visible css=#form-groups-signing legend a[href*='/edit#fieldsetlegend-signing'] 10
1445+
${note_edit} Add pointy note css=#form-groups-signing legend a[href*='/edit#fieldsetlegend-signing'] Icône d'édition du panneau de signature position=top color=blue
1446+
Capture and crop page screenshot doc/utilisation/2-13-2-icone-edition-signature.png id=form-groups-signing ${note_edit}
1447+
Remove element id=${note_edit}
1448+
Click element css=#form-groups-signing legend a[href*='/edit#fieldsetlegend-signing']
1449+
Sleep 0.5
1450+
Wait until element is visible id=fieldsetlegend-signing 10
1451+
Click element id=fieldsetlegend-signing
1452+
Sleep 0.5
1453+
${note0} Add pointy note id=formfield-form-widgets-ISigningBehavior-signers Signataires préremplis par la configuration position=top color=blue
1454+
Capture and crop page screenshot doc/utilisation/2-13-2-signataires-preremplis.png id=fieldset-signing ${note0}
1455+
Remove element id=${note0}
1456+
# Approbation par lui-même pour chaque signataire (on décoche "Aucune approbation", on coche "Lui-même")
1457+
Unselect checkbox id=form-widgets-ISigningBehavior-signers-0-widgets-approvings-0
1458+
Select checkbox id=form-widgets-ISigningBehavior-signers-0-widgets-approvings-1
1459+
Unselect checkbox id=form-widgets-ISigningBehavior-signers-1-widgets-approvings-0
1460+
Select checkbox id=form-widgets-ISigningBehavior-signers-1-widgets-approvings-1
1461+
${note1} Add pointy note id=formfield-form-widgets-ISigningBehavior-signers Approbation activée pour chaque signataire position=top color=blue
1462+
Capture and crop page screenshot doc/utilisation/2-13-2-approbation.png id=fieldset-signing ${note1}
1463+
Remove element id=${note1}
1464+
Select checkbox id=form-widgets-ISigningBehavior-esign-0
1465+
${note2} Add pointy note id=formfield-form-widgets-ISigningBehavior-esign Signature électronique activée position=top color=blue
1466+
Capture and crop page screenshot doc/utilisation/2-13-2-signature-electronique-on.png id=fieldset-signing ${note2}
1467+
Remove element id=${note2}
1468+
Click button id=form-buttons-save
1469+
Wait until element is visible css=#viewlet-below-content-body table.actionspanel-no-style-table 10
1470+
${TPL} = Path to uid /${PLONE_SITE_ID}/templates/om/main
1471+
Go to ${PLONE_URL}/${om_path}/persistent-document-generation?template_uid=${TPL}&output_format=odt
1472+
Sleep 2
1473+
# Mise à l'approbation : proposition au n+1 (par l'encodeur) puis passage à l'approbation (par le chef, n+1).
1474+
Fire transition ${UID} propose_to_n_plus_1
1475+
Enable autologin as chef
1476+
Fire transition ${UID} propose_to_approve
1477+
Go to ${PLONE_URL}/${om_path}
1478+
Sleep 0.5
1479+
Wait until element is visible css=.DV-pageImage 10
1480+
Show connected user Michel Chef (responsable de service, n+1) 2-13-2-user-chef.png
1481+
Capture and crop page screenshot doc/utilisation/2-13-2-a-approuver.png css=div.viewlet_workflowstate id=fieldset-versions
1482+
# Approbation par le premier approbateur (Directeur Général / dirg)
1483+
Enable autologin as dirg
1484+
Go to ${PLONE_URL}/${om_path}
1485+
Sleep 0.5
1486+
Wait until element is visible css=#fieldset-versions td.iconified-approved a.iconified-action.editable 10
1487+
Show connected user Maxime DG (Directeur Général, 1er approbateur) 2-13-2-user-dirg.png
1488+
# Mode lecture
1489+
Wait until element is visible css=.DV-pageImage 10
1490+
Wait until element is visible id=read_mode_icon 10
1491+
${note_rm} Add pointy note id=read_mode_icon Bouton "mode lecture" pour afficher le document en plein écran position=bottom color=blue
1492+
Capture and crop page screenshot doc/utilisation/2-13-2-icone-mode-lecture.png id=portal-globalnav ${note_rm}
1493+
Remove element id=${note_rm}
1494+
Click element id=read_mode_icon
1495+
Wait until element is visible css=body.read-mode 10
1496+
Sleep 1
1497+
Capture and crop page screenshot doc/utilisation/2-13-2-mode-lecture.png id=content
1498+
# Sortie du mode lecture
1499+
Click element id=read_mode_icon
1500+
Sleep 0.5
1501+
Delete Cookie dms_document_view
1502+
Add Cookie dv_zoom_size 500 path=/
1503+
Go to ${PLONE_URL}/${om_path}
1504+
Sleep 0.5
1505+
Wait until element is visible css=#fieldset-versions td.iconified-approved a.iconified-action.editable 10
1506+
${note3} Add pointy note css=#fieldset-versions td.iconified-approved a.iconified-action.editable Icône d'approbation position=top color=blue
1507+
Capture and crop page screenshot doc/utilisation/2-13-2-icone-approbation.png id=fieldset-versions ${note3}
1508+
Remove element id=${note3}
1509+
Click element css=#fieldset-versions td.iconified-approved a.iconified-action.editable
1510+
Sleep 1
1511+
# Approbation par le second approbateur (Bourgmestre)
1512+
Enable autologin as bourgmestre
1513+
Go to ${PLONE_URL}/${om_path}
1514+
Sleep 0.5
1515+
Wait until element is visible css=#fieldset-versions td.iconified-approved a.iconified-action.editable 10
1516+
Show connected user Paul BM (Bourgmestre, 2e approbateur) 2-13-2-user-bourgmestre.png
1517+
Click element css=#fieldset-versions td.iconified-approved a.iconified-action.editable
1518+
Sleep 1
1519+
# Une session eSign a été créée à l'état "En création" ; le courrier passe automatiquement à la signature
1520+
Enable autologin as Manager
1521+
Set autologin username dirg
1522+
Go to ${PLONE_URL}/${om_path}
1523+
Sleep 0.5
1524+
Wait until element is visible css=span.state-title-draft 10
1525+
Show connected user Gestionnaire de signatures 2-13-2-user-gestionnaire.png
1526+
${note4} Add pointy note css=span.state-title-draft Session eSign en cours de création position=bottom color=blue
1527+
Capture and crop page screenshot doc/utilisation/2-13-2-session-en-creation.png id=session-info ${note4}
1528+
Remove element id=${note4}
1529+
Wait until page contains element css=#fieldset-versions a.version-link[title*=".pdf"] 10
1530+
${note_pdf} Add pointy note css=#fieldset-versions a.version-link[title*=".pdf"] Un document PDF a été généré pour la signature position=top color=blue
1531+
Capture and crop page screenshot doc/utilisation/2-13-2-pdf-genere-signature.png id=fieldset-versions ${note_pdf}
1532+
Remove element id=${note_pdf}
1533+
# Onglet Paraphéo
1534+
Wait until element is visible id=portaltab-parapheo 10
1535+
${note5} Add pointy note id=portaltab-parapheo Onglet Paraphéo position=bottom color=blue
1536+
Capture and crop page screenshot doc/utilisation/2-13-2-onglet-parapheo.png id=portal-globalnav ${note5}
1537+
Remove element id=${note5}
1538+
Click element id=portaltab-parapheo
1539+
Wait until element is visible css=img[onclick*="external-esign-session-create"] 10
1540+
# Resize the window to show the actions column
1541+
Set Window Size 2200 1920
1542+
Sleep 0.5
1543+
Wait until element is visible css=img[onclick*="external-esign-session-create"] 10
1544+
${note6} Add pointy note css=img[onclick*="external-esign-session-create"] Bouton de création de session externe position=left color=blue
1545+
Capture and crop page screenshot doc/utilisation/2-13-2-creation-session-externe.png id=content ${note6}
1546+
Sleep 0.5
1547+
Remove element id=${note6}
1548+
# Restore window size
1549+
Set Window Size 1200 1920
1550+
13821551
Debug
13831552
[TAGS] DBG
13841553
Pass execution Only for debug purpose
@@ -1398,9 +1567,53 @@ Suite Setup
13981567
Set Window Size 1200 1920
13991568
Set Suite Variable ${CROP_MARGIN} 5
14001569
Set Selenium Implicit Wait 2
1401-
Set Selenium Speed 0.2
1570+
Set Selenium Speed ${SELENIUM_SPEED}
14021571
Enable autologin as Manager
14031572
Set autologin username dirg
14041573
Go to ${PLONE_URL}/robot_init
1574+
Add Cookie dv_zoom_size 500 path=/
14051575
Disable autologin
14061576
# Pause
1577+
1578+
Activate esigning
1579+
[Documentation] Active la signature/approbation électronique (profil singles).
1580+
... N'est appelé que dans les tests 2.13.1 / 2.13.2 : pour tous les autres tests, la
1581+
... signature reste désactivée.
1582+
Enable autologin as Manager
1583+
Set autologin username dirg
1584+
Apply profile step imio.dms.mail:singles imiodmsmail-activate-esigning
1585+
Disable autologin
1586+
1587+
Show connected user
1588+
[Documentation] Display a top banner naming the currently connected user (so a video viewer
1589+
... always knows who is acting), capture a screenshot, then remove the banner.
1590+
[Arguments] ${name} ${shot}
1591+
${unote} Add main note Connecté en tant que : ${name}
1592+
Capture and crop page screenshot doc/utilisation/${shot} id=portal-top ${unote}
1593+
Remove element id=${unote}
1594+
1595+
Add outgoing mail for signing
1596+
[Documentation] Create an outgoing mail (as the current user) filling every required field
1597+
... (title, recipients, send_modes via UI ; treating_groups and sender).
1598+
... Returns the mail relative path.
1599+
[Arguments] ${title}
1600+
Go to ${PLONE_URL}/outgoing-mail
1601+
Wait until element is visible newOMCreation 10
1602+
Click element newOMCreation
1603+
Wait until element is visible css=.template-dmsoutgoingmail #formfield-form-widgets-sender 10
1604+
Sleep 0.5
1605+
Create content type=person container=/${PLONE_SITE_ID}/contacts firstname=Dale lastname=Cooper zip_code=4000 city=Belleville street=Rue Moyenne number=1991 email=dale.cooper@twinpeaks.com
1606+
Input text name=form.widgets.IDublinCore.title ${title}
1607+
Input text name=form.widgets.recipients.widgets.query cooper
1608+
Wait until element is visible css=.ac_results:not([style*="display: none"]) 10
1609+
Click element css=.ac_results:not([style*="display: none"]) li
1610+
Select checkbox id=form-widgets-send_modes-0
1611+
Click button id=form-buttons-save
1612+
Wait until element is visible css=#viewlet-below-content-body table.actionspanel-no-style-table 10
1613+
${om_path} = Get mail path ptype=dmsoutgoingmail title=${title}
1614+
${UID} = Path to uid /${PLONE_SITE_ID}/${om_path}
1615+
${TG} = Path to uid /${PLONE_SITE_ID}/contacts/plonegroup-organization/direction-generale/grh
1616+
Set field value ${UID} treating_groups ${TG} str
1617+
${SENDER} = Path to uid /${PLONE_SITE_ID}/contacts/personnel-folder/agent/agent-grh
1618+
Set field value ${UID} sender ${SENDER} str
1619+
[Return] ${om_path}

0 commit comments

Comments
 (0)