Skip to main content

Test Groups

Groups allow batch execution of multiple test profiles across different test types.

Overview

Run multiple test profiles with one command:

{
"groups": {
"pre-release": {
"e2e": ["smoke", "full"],
"security": ["scan"],
"phpstan": ["strict"]
}
}
}

Run all:

qit run:group pre-release

Group Structure

Groups map test types to profile arrays:

{
"groups": {
"group-name": {
"test-type": ["profile1", "profile2"],
"another-type": ["profile3"]
}
}
}

Naming Rules:

  • Group names, test type names, and profile names must use only alphanumeric, hyphens (-), underscores (_)
  • No spaces or special characters
  • See Validation Rules

Common Group Patterns

CI Pipeline Groups

{
"groups": {
"ci-quick": {
"e2e": ["smoke"]
},
"ci-full": {
"e2e": ["smoke", "full", "compatibility"],
"security": ["scan"],
"phpstan": ["analysis"]
}
}
}

Release Groups

{
"groups": {
"alpha": {
"e2e": ["smoke"]
},
"beta": {
"e2e": ["smoke", "full"],
"security": ["scan"]
},
"release": {
"e2e": ["smoke", "full", "compatibility"],
"security": ["scan"],
"phpstan": ["strict"],
"phpcompatibility": ["check"]
}
}
}

Using Groups

Run a Group

qit run:group pre-release

Run Specific Test Type in Group

qit run:group pre-release --only=e2e

Best Practices

  • Use descriptive group names
  • Group related test profiles
  • Document group purposes
  • Keep groups maintainable

CLI Usage

Run a group of tests defined in qit.json

run:group [options] [--] <group>

Arguments:
group Group name from qit.json

--only=ONLY Run only specific test type (e.g., e2e, security)
--async|--no-async Run tests asynchronously (default: true)
--wait|--no-wait Wait for all tests to complete (overrides --async)
-i, --group-identifier[=GROUP-IDENTIFIER] Identifier for this group run (auto-generated if not provided)