AutoMax
Guides

Organizations, workspaces, projects and modules

The four-level hierarchy AutoMax uses to organise automation across teams and applications.

What you'll learn

How organizations, workspaces, projects and modules nest, which file declares each level, what a module adds on top of a features folder, and how the demo project is modelled.

The hierarchy

LevelDeclared inHolds
Organizationautomax.workspace.yamlorganizationa company or product line; membership roles member, admin, owner
Workspaceautomax.workspace.yamlworkspaces[]a team or product area; an organization holds many, and defaultWorkspace names the one projects join unless they set workspace:; defaults for browsers, suites, test-id attribute and shared processes; membership roles viewer, editor, admin
Projectprojects/<slug>/automax.project.yamlone application: layers, browsers, environments, data, auth, screenshots, modules, processes
Modulemodules: inside the project YAMLone functional area: a folder under features/, its testing types, expected tags, owner, Jira component, routes and endpoints

The workspace file

automax.workspace.yaml
organization:
  slug: automax
  name: AutoMax
  url: https://github.com/siri1410/AutoMax
workspaces:
  - slug: default
    name: Default workspace
    organization: automax
  - slug: platform-qa
    name: Platform QA
    organization: automax
defaultWorkspace: default
defaults:
  browsers: [chromium, firefox, webkit]
  suites: [smoke, regression, sanity]
  testIdAttribute: data-testid
  processes:
    - {
        name: pr-check,
        trigger: pr,
        tags: '@smoke',
        browsers: [chromium],
        harMode: replay,
        gates: { minPassRate: 100 },
      }

Projects inherit defaults and may override any of them. A project joins a workspace with workspace: <slug> (one of workspaces[]); when omitted it joins defaultWorkspace. organization: must match the file's organization. automax workspace tree prints the result, and automax db sync mirrors it into the database so the web UI can show workspaces with each user's effective role.

Modules

projects/demo-shop/automax.project.yaml
organization: automax
workspace: default
modules:
  - name: auth
    title: Authentication
    path: auth # features/auth/ (default: the module name)
    layers: [ui]
    testingTypes: [functional, smoke, regression, data-driven]
    tags: ['@auth']
    routes: [login]
  - name: inventory
    title: Inventory
    path: inventory
    layers: [ui]
    testingTypes: [functional, regression, visual, accessibility]
    tags: ['@inventory']
    routes: [inventory]
  - name: cart
    title: Cart
    path: cart
    layers: [ui]
    testingTypes: [functional, regression]
    tags: ['@cart']
    routes: [cart, checkout]
  - name: posts-api
    title: Posts API
    path: api
    layers: [api]
    testingTypes: [functional, contract, smoke, regression]
    tags: ['@posts']
    endpoints: ['/posts', '/posts/{id}', '/posts/{id}/comments']
  - name: hybrid
    title: Hybrid flows
    path: hybrid
    layers: [hybrid]
    testingTypes: [integration]
    tags: ['@hybrid-demo']

What a module gives you:

  • Lint warns when a scenario under features/<module>/ lacks one of the module's expected tags.
  • Coverage joins routes and endpoints with scenarios per suite tag.
  • Run selection: automax run -p demo-shop --module cart runs one module; processes may list modules:.
  • Reporting: the dashboard, insights and issues group by module; jiraComponent and owner flow into created issues.

A module is metadata over a folder. Nothing stops you from starting with the plain features/ui, features/api, features/hybrid layout and adding modules when a project grows.

Next steps

On this page