Project Structure

Provengo projects are regular file system directories that follow a standard structure. The below listing shows a typical provengo project. Some projects may not have all files mentioned in this listing. A config folder with a provengo.yml file, however, is mandatory.

A Sample Provengo Project
📒 my-project (1)
    📄 README.md
    📂 config (2)
        📄 provengo.yml (3)
        📂 hooks  (4)
    📂 spec (5)
        📂 js (6)
            📄 business-logic.js
            📄 direct-automation.js
    📂 meta-spec (7)
        📄 code-about-the-spec.js (8)
    📂 lib (9)
        📄 manual-ops.js
    📂 data (10)
        📄 product-table.js
    📂 products (11)
        📂 internal (12)
        📂 run-sources (13)
            📄 samples.json
            📄 ensemble.json
        📂 reports (14)
        📂 test-book (15)
        📂 test-scripts (16)
1 The project folder.
2 Configuration and administrative data.
3 Main configuration file. See Configuration.
4 Hook scripts (pre/post/cleanup) live here. Note that different config profiles might use different scripts, so this place can get quite busy. See Hook Scripts.
5 Code creating the specification space lives here. Organized by language.
6 Contains all specification’s JavaScript (.js) files.
7 Code that is about the spec lives here.
8 Files here contain code for generating test scripts (Python, .xaml), generating test books, or composing optimized test suites.
9 .js files used as external libraries (e.g. Manual sessions, custom logic).
10 .js files that contain test data (logins, site addresses, etc).
11 Artifacts generated using code in the rest of the project’s folders. In most cases this folder can be ignored by git, since it contains no new information.
12 Internal data, mostly for run logs.
13 Files storing test scenarios. Samples and ensembles normally live here.
14 Test suite execution reports. See report.
15 Test books are generated here. See gen-book.
16 Test scripts for other systems are generated here. See gen-scripts.
The load order of the code is detailed here.
In order to conveniently disable and enable source files (e.g. to switch between automation types), create a sub-directory in spec/js, and disable and enable file by moving them in and out of it.

Migrating Projects to the New Structure

  1. Create a config folder and move provengo.yml into that folder.

  2. Create a spec folder, and create a js folder inside it. Move all specification files into that folder.

  3. Create a meta-spec folder and move all meta specification files to this folder (ensemble-code, rankingFunction, script-writer, book-writer etc.).

  4. Create a data folder and move all data files to this folder.

Some projects may have files that contain pieces that belong to different folders (e.g. both data and specification). When updating the structure of such projects, split these files based on code functionality.

As a quick-and-dirty workaround, it is possible to create only the config and spec/js folders, and put all the .js files in spec/js. However, this does not take advantage of the new project structure.