From e53c95ebc61ab1cdbe4efde63183a4b029d70999 Mon Sep 17 00:00:00 2001 From: Bastien PIERRE Date: Wed, 27 Nov 2024 11:38:27 +0100 Subject: [PATCH] [DOC] tours --- .../developer/reference/backend/testing.rst | 105 +++++++++++++++--- .../reference/backend/testing/tours.png | Bin 32506 -> 0 bytes 2 files changed, 92 insertions(+), 13 deletions(-) delete mode 100644 content/developer/reference/backend/testing/tours.png diff --git a/content/developer/reference/backend/testing.rst b/content/developer/reference/backend/testing.rst index 284605e69..d3458dc3d 100644 --- a/content/developer/reference/backend/testing.rst +++ b/content/developer/reference/backend/testing.rst @@ -578,6 +578,8 @@ You can then: - :ref:`Assets Bundle ` - :ref:`testing/python` +.. _testing/javascript/test: + Javascript ~~~~~~~~~~ @@ -588,7 +590,6 @@ Javascript import tour from 'web_tour.tour'; tour.register('rental_product_configurator_tour', { url: '/web', // Here, you can specify any other starting url - test: true, }, [ // Your sequence of steps ]); @@ -730,14 +731,96 @@ To start a tour from a python test, make the class inherit from def test_your_test(self): # Optional Setup - self.start_tour("/web", 'your_module.your_tour_name', login="admin") + self.start_tour("/web", "your_tour_name", login="admin") # Optional verifications +Writing an onboarding tour +-------------------------- + +Structure +~~~~~~~~~ + +To write an onboarding tour for `your_module`, start with creating the required files: + +.. code-block:: text + + your_module + ├── ... + ├── data + | └── your_tour.xml + ├── static/src/js/tours/your_tour.js + └── __manifest__.py + +You can then update :file:`__manifest__.py` to add :file:`your_tour.js` in the assets and :file:`your_tour.xml` in the data. + + .. code-block:: python + + 'data': [ + 'data/your_tour.xml', + ], + 'assets': { + 'web.assets_backend': [ + 'your_module/static/src/js/tours/your_tour.js', + ], + }, + +Javascript +~~~~~~~~~~ + +The javascript part is the same as for :ref: `the test tour `. + +XML +~~~ + +When you have your tour in the javascript registry, you can create a record `web_tour.tour` in the xml, like that: + + .. code-block:: xml + + + + + your_tour + 10 + Congrats, that was a great tour + + + +- `name`: Required, the name must be the same as the one in the + javascript registry. +- `sequence`: Optional; determines the order to execute the + onboarding tours. Defaults to 1000. +- `url`: Optional; the url where to start the tour. If ``url`` is ``False``, + take the url from the registry. Defaults to "/odoo". +- `rainbow_man_message`: Optional; will show the message in the + rainbow man effect at the completion of the tour. If ``rainbow_man_message`` is ``False``, + there is no rainbow effect. Defaults to ``Good job! You went through all steps of this tour.`` + +Running onboarding tours +~~~~~~~~~~~~~~~~~~~~~~~~ + +They can all be started in their sequence order by toggling the :guilabel:`Onboarding` option in the user menu. +You can run specific onboarding tours by going to the :menuselection:`Settings --> Technical --> User Interface --> Tours` +and clicking on :guilabel:`Onboarding` or :guilabel:`Testing`. + +- **Onboarding**: will execute the tour in interactive mode. That means the tour will show what to do and + wait for interactions from the user. +- **Testing**: will execute the tour automatically. That means the tour will be executing all the step in + front of the user. + +Tour recorder +~~~~~~~~~~~~~ + +You can also create tours easily with the tour recorder. To do so, click on :guilabel:`Record` on the +onboarding tours view. When started, this tool will record all your interactions in Odoo. + +The created tours are flagged in the onboarding tours view as **Custom**. These tours can also +be exported to a javascript file, ready to be put in your module. + Debugging tips -------------- -Observing tours in a browser -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Observing test tours in a browser +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ There are three ways with different tradeoffs: @@ -748,7 +831,7 @@ When running a tour locally via the test suite, the ``watch=True`` parameter can be added to the ``browser_js`` or ``start_tour`` call:: - self.start_tour("/web", code, watch=True) + self.start_tour("/web", "your_tour_name", watch=True) This will automatically open a Chrome window with the tour being run inside it. @@ -768,7 +851,7 @@ When running a tour locally via the test suite, the ``debug=True`` parameter can be added to the ``browser_js`` or ``start_tour`` call:: - self.start_tour("/web", code, debug=True) + self.start_tour("/web", "your_tour_name", debug=True) This will automatically open a fullscreen Chrome window with opened devtools and a debugger breakpoint set at the start of the tour. The tour @@ -785,19 +868,15 @@ debugger stops on the exception. Run via browser *************** -Tours can also be launched via the browser UI, either by calling +Test tours can also be launched via the browser UI by calling .. code-block:: javascript - odoo.startTour(tour_name); + odoo.startTour("tour_name"); in the javascript console, or by enabling :ref:`tests mode ` by setting ``?debug=tests`` in -the URL, then selecting **Start Tour** in the debug menu and picking a -tour: - -.. image:: testing/tours.png - :align: center +the URL. **Advantages** - easier to run diff --git a/content/developer/reference/backend/testing/tours.png b/content/developer/reference/backend/testing/tours.png deleted file mode 100644 index d032b85701cdc7937a1ab168c60d2a5135ca54f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32506 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