Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
6f7ed83
feat(01-foundation): create core documentation templates (README and …
gibiw Feb 13, 2026
ee655f3
feat(01-foundation): create feature guide templates
gibiw Feb 13, 2026
0ca510e
feat(01-foundation): create placeholder naming convention reference
gibiw Feb 13, 2026
cc544f9
docs(01-foundation): complete 01-01 plan execution
gibiw Feb 13, 2026
372cbd7
feat(01-foundation-02): create placeholder validation script
gibiw Feb 13, 2026
97de48e
feat(01-foundation-02): document framework syntax variations
gibiw Feb 13, 2026
b01d665
feat(01-foundation-02): create code style guide for documentation
gibiw Feb 13, 2026
8c34c5c
docs(01-foundation-02): complete validation and reference documentati…
gibiw Feb 13, 2026
b4c8770
feat(01-foundation): create template usage guide with comprehensive w…
gibiw Feb 13, 2026
c6b5d35
docs(01-foundation-03): complete template usage guide and foundation …
gibiw Feb 13, 2026
ece26d0
docs(02-core-documentation): create phase plan
gibiw Feb 13, 2026
817c6ce
fix(02): revise plans based on checker feedback
gibiw Feb 13, 2026
c422386
feat(02-core-documentation): apply master templates to Vitest reporter
gibiw Feb 13, 2026
9af6811
docs(02-01): apply templates to Jest reporter (README.md + usage.md)
gibiw Feb 13, 2026
187f4b4
feat(02-core-documentation): apply templates to Cypress reporter
gibiw Feb 13, 2026
7573805
feat(02-core-documentation): apply master templates to CucumberJS rep…
gibiw Feb 13, 2026
6cc507e
feat(02-core-documentation): apply templates to Mocha reporter
gibiw Feb 13, 2026
089e7f7
docs(02-01): apply templates to Playwright reporter (README.md + usag…
gibiw Feb 13, 2026
e645b01
docs(02-core-documentation-04): apply templates to Newman reporter
gibiw Feb 13, 2026
9522024
docs(02-core-documentation): complete 02-03 plan execution summary
gibiw Feb 13, 2026
5eacbea
docs(02-core-documentation-04): apply templates to TestCafe reporter
gibiw Feb 13, 2026
9fb5e9a
docs(02-core-documentation-04): apply templates to WDIO reporter
gibiw Feb 13, 2026
419c053
docs(02-core-documentation-04): complete Newman, TestCafe, and WDIO plan
gibiw Feb 13, 2026
888f15c
docs(02-core-documentation): add missing sections and standardize str…
gibiw Feb 13, 2026
a0777cc
docs(02-05): complete cross-framework validation plan
gibiw Feb 13, 2026
8ec0d52
docs(02-06): complete human review and Phase 2 verification
gibiw Feb 13, 2026
55d8c9f
Updated gitignore
gibiw Feb 13, 2026
0899b99
docs(03-feature-guides): create phase plan
gibiw Feb 13, 2026
b722a19
feat(03-01): create ATTACHMENTS.md for Jest and Playwright
gibiw Feb 13, 2026
49af464
feat(03-feature-guides): add STEPS.md for Jest and Playwright
gibiw Feb 13, 2026
a1975d7
feat(03-01): create ATTACHMENTS.md for Cypress, Mocha, and Vitest
gibiw Feb 13, 2026
6c9cdde
feat(03-03): create ATTACHMENTS.md and STEPS.md for TestCafe and WDIO
gibiw Feb 13, 2026
c79a149
feat(03-feature-guides): add STEPS.md for Cypress, Mocha, and Vitest
gibiw Feb 13, 2026
af0e4a4
feat(03-03): create ATTACHMENTS.md and STEPS.md for CucumberJS and Ne…
gibiw Feb 13, 2026
747dac6
docs(03-03): complete plan summary and update STATE.md
gibiw Feb 13, 2026
5a3fdff
feat(03-feature-guides-04): create MULTI_PROJECT.md for Newman and Te…
gibiw Feb 13, 2026
42f46d9
docs(03-05): create UPGRADE.md for Jest, Playwright, and Cypress
gibiw Feb 13, 2026
f70fbf5
feat(03-feature-guides-04): enhance 7 existing MULTI_PROJECT.md files
gibiw Feb 13, 2026
9b07d3f
docs(03-05): create UPGRADE.md for remaining 6 frameworks
gibiw Feb 13, 2026
db3f016
docs(03-feature-guides-04): complete multi-project documentation plan
gibiw Feb 13, 2026
42b43a3
docs(03-feature-guides-06): complete Phase 3 validation and approval
gibiw Feb 13, 2026
8a976ee
fix(04-03): correct TestCafe attachment parameter from contentType to…
gibiw Feb 13, 2026
95ad377
fix(04-01): correct vitest attachment parameter from contentType to type
gibiw Feb 13, 2026
e2aadcf
docs(04-03): add expected behavior documentation to example README files
gibiw Feb 13, 2026
d6fcd99
docs(04-02): fix Vitest documentation framework-specific syntax
gibiw Feb 13, 2026
0bcb31f
docs(04-03): complete plan documentation and update state
gibiw Feb 13, 2026
9160e33
docs(04-02): add expected behavior documentation to example README files
gibiw Feb 13, 2026
68eae00
feat(04-04): add CI workflow for testing examples
gibiw Feb 13, 2026
b89e31d
feat(04-04): add Phase 4 validation report and complete EX-02
gibiw Feb 13, 2026
82adea3
docs(04-04): complete CI workflow and validation plan
gibiw Feb 13, 2026
4d055e8
chore(05-01): create terminology dictionary and reference guide
gibiw Feb 13, 2026
70b31e0
chore(05-01): create validation scripts for terminology and links
gibiw Feb 13, 2026
6bfae42
docs(05-01): complete validation tooling plan
gibiw Feb 13, 2026
393f2bc
docs(05-02): fix terminology, links, and TOCs across all 9 frameworks
gibiw Feb 13, 2026
74388e0
docs(05-02): add CI validation and create QA report
gibiw Feb 13, 2026
eb00591
docs(05-02): complete plan 05-02 execution with summary and state upd…
gibiw Feb 13, 2026
0648400
docs: add npm downloads badges to all reporter READMEs
gibiw Feb 13, 2026
bb5509b
chore: remove .planning directory and examples workflow from git
gibiw Feb 13, 2026
07f86ed
docs: add missing documentation links to TestCafe, Newman, and WDIO R…
gibiw Feb 13, 2026
a3b338a
docs: fix multi-project example paths in commons README
gibiw Feb 13, 2026
9b06bfa
Merge branch 'main' into docs/04-examples-validation-plans
gibiw Feb 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,7 @@ jspm_packages/

# Temporary files and playground
tmp
*.tmp
*.tmp

CLAUDE.md
.planning/

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI tool artifacts added to shared project gitignore

Low Severity

CLAUDE.md and .planning/ are personal AI development tool artifacts added to the shared project .gitignore. These are developer-specific files (Claude AI context/planning) that belong in the developer's global gitignore (~/.gitignore_global) or .git/info/exclude, not in the repository's .gitignore which is shared with all contributors.

Fix in Cursor Fix in Web

30 changes: 28 additions & 2 deletions examples/multiProject/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,12 +184,38 @@ Project codes (e.g. `PROJ1`, `PROJ2`) must match `testops_multi.projects[].code`

When you run the examples:

1. **Test runs are created** in each configured project (e.g. DEVX and DEMO).
1. **Test runs are created** in each configured project (e.g. PROJ1 and PROJ2).
2. **Test results are sent** to the appropriate projects based on the mapping you specify.
3. **Each project has its own test run** with the title and description from config.
4. **Results appear** in both projects dashboards.
4. **Results appear** in both projects' dashboards.
5. **Tests without any Qase ID** are sent to the `default_project` without linking to a test case.

## Expected Behavior by Framework

### CucumberJS
* Uses Gherkin tag syntax: `@qaseid.PROJ1(1)` and `@qaseid.PROJ2(2)` in feature files
* Each scenario can be reported to multiple projects using separate tags
* Native Gherkin Given/When/Then steps are automatically captured
* Attachments via `this.attach()` in step definitions

### Newman
* Uses comment-based markers: `// qase PROJ1: 1` and `// qase PROJ2: 2` in test scripts
* Multiple comments before `pm.test()` map the same test to multiple projects
* No programmatic steps or attachments API (Postman limitation)
* Collection structure determines test organization

### TestCafe
* Uses builder pattern: `test.meta(qase.projects({ PROJ1: [1], PROJ2: [2] }).create())`
* Chaining supported: `qase.projects({...}).title('...').fields({...}).create()`
* Nested steps use callback parameter (s, s1, s2) for hierarchy
* Attachments use `type` parameter (not `contentType`)

### WDIO
* **Mocha/Jasmine mode:** `it(qase.projects({ PROJ1: [1], PROJ2: [2] }, 'Test name'), () => {...})`
* **Cucumber mode:** Uses Gherkin tags like CucumberJS
* Supports both programmatic steps and Gherkin steps depending on framework
* Reporter options: `disableWebdriverStepsReporting`, `useCucumber`

## Mapping Tests to Projects (Summary)

| Reporter | Helper / usage |
Expand Down
81 changes: 81 additions & 0 deletions examples/single/cucumberjs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# CucumberJS Example

This is a sample project demonstrating how to write and execute tests using the CucumberJS framework with integration to Qase Test Management.

## Prerequisites

Ensure that the following tools are installed on your machine:

1. [Node.js](https://nodejs.org/) (version 18 or higher is recommended)
2. [npm](https://www.npmjs.com/) or [yarn](https://yarnpkg.com/)

## Setup Instructions

1. Clone this repository by running the following commands:
```bash
git clone https://github.com/qase-tms/qase-javascript.git
cd qase-javascript/examples/single/cucumberjs
```

2. Install the project dependencies:
```bash
npm install
```

3. Create a `qase.config.json` file in the root of the project. Follow the instructions on [how to configure the file](https://github.com/qase-tms/qase-javascript/tree/main/qase-javascript-commons#configuration).

## Example Files

This example includes:

* **features/** — Gherkin feature files with test scenarios
* `simple.feature` — Basic scenarios with Qase tags (@QaseID, @QaseTitle, @QaseFields)
* `table.feature` — Examples using data tables
* **step_definitions/** — Step implementation files
* `simple_steps.js` — Step definitions using native Cucumber Given/When/Then
* `table_steps.js` — Step definitions for table-based scenarios
* **qase.config.json** — Qase reporter configuration

## Running Tests

To run tests locally without reporting to Qase:

```bash
QASE_MODE=off npm test
```

To run tests and upload the results to Qase Test Management:

```bash
npm test
```

Or with explicit mode:

```bash
QASE_MODE=testops npx cucumber-js -f cucumberjs-qase-reporter
```

## Expected Behavior

When tests execute with Qase reporting enabled:

* **Gherkin scenarios** are reported as individual test cases in Qase
* **Given/When/Then/And steps** from feature files are automatically reported as Qase test steps
* **@QaseID tags** link scenarios to existing test cases in your Qase project
* **@QaseTitle tags** override the default scenario name in Qase
* **@QaseFields tags** add metadata (severity, priority, etc.) to test results
* **Attachments** added via `this.attach()` in step definitions are included in Qase results

## Framework-Specific Features

CucumberJS with Qase has unique patterns:

* **No programmatic qase.step() API** — Steps come from Gherkin syntax (Given/When/Then)
* **Native Cucumber attachments** — Use `this.attach(content, mimeType)` in step definitions (not `qase.attach()`)
* **Tag-based metadata** — Test configuration uses Gherkin tags instead of programmatic calls
* **Feature-based organization** — Test suite hierarchy comes from Feature/Scenario structure

## Additional Resources

For more details on how to use this integration with Qase Test Management, visit the [Qase CucumberJS documentation](https://github.com/qase-tms/qase-javascript/tree/main/qase-cucumberjs).
127 changes: 120 additions & 7 deletions examples/single/cypress/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Ensure that the following tools are installed on your machine:
1. Clone this repository by running the following commands:
```bash
git clone https://github.com/qase-tms/qase-javascript.git
cd qase-js/examples/cypress
cd qase-javascript/examples/single/cypress
```

2. Install the project dependencies:
Expand All @@ -26,18 +26,131 @@ Ensure that the following tools are installed on your machine:
3. Create a `qase.config.json` file in the root of the project. Follow the instructions
on [how to configure the file](https://github.com/qase-tms/qase-javascript/tree/main/qase-javascript-commons#configuration).

4. Run the Cypress tests locally:
4. To run tests locally without Qase reporting (interactive mode):
```bash
npx cypress open
QASE_MODE=off npx cypress open
```
This will open the Cypress Test Runner, where you can manually execute tests.

5. To run tests and upload the results to Qase Test Management, use the following command:
5. To run tests locally without Qase reporting (headless mode):
```bash
npx cypress run --env qaseApiToken=YOUR_QASE_API_TOKEN,qaseProjectCode=YOUR_PROJECT_CODE
QASE_MODE=off npx cypress run
```

Replace `YOUR_QASE_API_TOKEN` and `YOUR_PROJECT_CODE` with your Qase API token and project code.
6. To run tests and upload the results to Qase Test Management:
```bash
QASE_MODE=testops npx cypress run
```

## Example Files

This project contains several test files demonstrating different Qase features:

| File | Feature | Description |
|------|---------|-------------|
| `simpleTests.cy.js` | Basic tests | Simple Cypress tests with and without Qase integration |
| `methodTests.cy.js` | Qase methods | Demonstrates `qase.comment()` and `qase.attach()` methods |
| `stepTests.cy.js` | Test steps | Defines execution steps with `qase.step()` (synchronous callbacks) |
| `parametrizedTests.cy.js` | Parameters | Reports parameterized test data with `qase.parameters()` |

## Expected Behavior

### Running with QASE_MODE=off (Local Development)

When running tests with `QASE_MODE=off`, tests execute normally without Qase reporting:

- Tests run and pass/fail as usual
- No data is sent to Qase TestOps
- No Qase API token required
- Output shows standard Cypress test results
- Cypress screenshots and videos work normally

This mode is useful for local development and debugging.

### Running with QASE_MODE=testops (CI/CD and Reporting)

When running tests with `QASE_MODE=testops`, test results are reported to Qase:

- Tests execute and results are sent to Qase TestOps
- A new test run is created in your Qase project
- Test results include all metadata (steps, attachments, comments, etc.)
- Console output includes Qase test run link
- Requires valid `QASE_TESTOPS_API_TOKEN` and `QASE_TESTOPS_PROJECT` configuration
- Cypress screenshots on failure can be attached automatically

**Steps Example (`stepTests.cy.js`):**
- Creates test result with multiple named steps using `qase.step()`
- Each step shows execution status, duration, and any errors
- **Important:** Cypress steps use synchronous callbacks (no async/await)
- Nested steps can be created by calling `qase.step()` within another step
- Steps are visible in Qase test run details

**Attachments Example (`methodTests.cy.js`):**
- Content attached via `qase.attach()` appears in test results
- Supports attaching text, JSON, and other content types
- Cypress screenshots and videos can be attached automatically on failure
- Attachments are visible in the test run details

**Parameters Example (`parametrizedTests.cy.js`):**
- Parameterized tests report their parameter values to Qase
- Parameters help identify which test variant produced which result
- Useful for data-driven testing scenarios

**Multi-Project Support:**
- When configured for multi-project reporting, same test results are sent to multiple Qase projects
- Each project can have different test case IDs for the same test

## Configuration

Example `qase.config.json`:

```json
{
"mode": "testops",
"debug": false,
"testops": {
"api": {
"token": "your_api_token_here"
},
"project": "YOUR_PROJECT_CODE",
"run": {
"title": "Cypress Automated Test Run",
"complete": true
}
}
}
```

Or configure via `cypress.config.js`:

```javascript
const { defineConfig } = require('cypress');

module.exports = defineConfig({
reporter: 'cypress-qase-reporter',
reporterOptions: {
mode: 'testops',
testops: {
api: {
token: process.env.QASE_TESTOPS_API_TOKEN,
},
project: 'YOUR_PROJECT_CODE',
run: {
complete: true,
},
},
},
e2e: {
setupNodeEvents(on, config) {
// implement node event listeners here
},
},
});
```

## Important Notes

- **Synchronous Steps:** Unlike Jest or Playwright, Cypress steps use synchronous callbacks. Do NOT use `async/await` with `qase.step()` in Cypress tests.
- **Import Pattern:** Use `import { qase } from 'cypress-qase-reporter/mocha';` (note the `/mocha` suffix, as Cypress uses Mocha under the hood)

## Additional Resources

Expand Down
Loading
Loading