Du pip install au premier test SAP, en dix minutes.
pip install robotframework-sapfx
Robot Framework est tiré comme dépendance. Si vous préférez ne rien installer à la main, un pack Windows autonome est livré à chaque release : une commande, sans cloner le dépôt.
SAPFX apporte trois bibliothèques, une par canal :
Cette étape ne concerne que le canal SAP GUI. Les canaux Fiori et API n'en ont pas besoin, et c'est d'ailleurs par eux qu'il est le plus simple de commencer si vous n'avez pas encore la main sur le serveur.
sapgui/user_scripting doit valoir TRUE. Il se règle en transaction RZ11, et cela relève en général de votre équipe Basis.
Ensuite, deux façons d'attaquer une session : lancer le Logon Pad à la main
puis appeler Connect To Session, ou laisser la bibliothèque le
démarrer elle-même avec Open Sap Logon.
*** Settings *** Library SapEccLibrary default_timeout=30s *** Test Cases *** Créer une commande client Open Connection Mon Système SAP [PRD] Connect To Session Run Transaction VA01 Fill Field By Label Type de commande OR Send Vkey 0 # Entrée Status Message Should Be Success [Teardown] Close Sap Session
Deux choses méritent d'être remarquées ici. D'abord
Fill Field By Label : le test désigne le champ par
son libellé visible, pas par un identifiant technique. C'est
ce qui permet à un testeur fonctionnel de lire le test, et c'est ce qui évite
de tout réécrire quand SAP renumérote ses écrans.
Ensuite Status Message Should Be Success : l'assertion porte sur
la barre de statut de SAP, indépendamment de la langue de l'interface. Un test
écrit ainsi ne casse pas parce qu'on l'a rejoué sur un système en allemand.
Les identifiants techniques restent disponibles quand vous en avez besoin
(Input Text prend un id de la forme
wnd[0]/usr/txtRSYST-BNAME). Pour les capturer, le dépôt fournit
un outil d'inspection sous tools/recorder, et le recorder intégré
à SAP GUI fonctionne aussi.
SapFioriLibrary s'appuie sur la bibliothèque Browser et réutilise sa page active : les deux doivent donc être importées dans la même suite.
*** Settings *** Library Browser Library SapFioriLibrary ui5_timeout=15s *** Test Cases *** Rechercher une commande dans Fiori Open Fiori App SalesOrder-manage Wait For Ui5 Idle Fill Ui5 Input 4711 controlType=SearchField Click Ui5 Control controlType=Button properties=Go Ui5 Text Should Be Sales Order 4711 controlType=Title
Open Fiori App prend une intention sémantique de
la forme SemanticObject-action, celle-là même que le launchpad
utilise, plutôt qu'une URL qui changerait d'un environnement à l'autre.
Wait For Ui5 Idle attend le repos réel de la page : plus
aucune requête réseau en vol, plus d'animation en cours. C'est la réponse à la
fragilité classique des tests UI5, où l'on finit par saupoudrer des attentes
fixes qui ralentissent la suite sans la fiabiliser.
Les contrôles se désignent par leur type et leurs propriétés
(controlType, properties, id,
bindingPath, viewId, idSuffix), jamais
par les identifiants générés par UI5, qui changent d'une exécution à l'autre.
Quand plusieurs contrôles correspondent, le nombre de correspondances est
journalisé : un sélecteur ambigu reste visible au lieu d'être silencieusement
tronqué.
*** Settings *** Library SapApiLibrary Suite Setup Gateway Should Be Active *** Test Cases *** Lire les cinq premières commandes Open Api Session https://mon-sap.exemple/sap/opu/odata/sap/API_SALES_ORDER_SRV ... user=RFCUSER sap_client=100 ${commandes}= Get Odata A_SalesOrder top=5 Log ${commandes}
Gateway Should Be Active en Suite Setup est le genre de
détail qui fait gagner des heures : si le Gateway OData n'est pas opérationnel,
la suite échoue tout de suite avec un message qui nomme la remédiation, au lieu
de laisser vingt tests tomber un par un sur des erreurs incompréhensibles.
Les arguments nommés deviennent des paramètres de requête :
top=5 est envoyé comme $top=5, le préfixe des options
système OData étant ajouté automatiquement aux noms connus.
Une nuance par canal, et elle compte au moment de dimensionner vos agents :
En pratique, les équipes font tourner les deux familles sur deux agents différents dans la même chaîne. Le rapport Robot Framework reste unique, quel que soit le canal parcouru.
La référence complète des keywords documente les trois bibliothèques, générée avec Libdoc depuis le code publié : SapEccLibrary, SapFioriLibrary et SapApiLibrary.
Ces pages documentent les keywords de bas niveau. Le dépôt livre en plus une
couche de keywords métier prêts à l'emploi (le répertoire
resources/) : c'est elle que les suites appellent en pratique,
pour qu'aucun localisateur brut ne traîne dans un test.
Pour essayer sans système sous la main : la partie Fiori se teste sans aucun SAP, et la partie SAP GUI se valide contre l'ABAP Platform Trial gratuit en Docker.
SAPFX est gratuit et le restera. Pour cadrer une stratégie complète, parlons-en.