diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1e502f8 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,75 @@ +name: Build, Test and Release + +on: + push: + branches: + - main + - development + pull_request: + branches: + - main + - development + +# Release-please için gerekli izinler +permissions: + contents: write + pull-requests: write + issues: write + +jobs: + build-and-test: + name: Build and Test + runs-on: ubuntu-latest + + steps: + # Kurulum adımları + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 'latest' + + - name: Install dependencies + run: npm install + + # Derleme adımı + - name: Build + run: npm run build + + # Test adımları + - name: Load env variables for tests + working-directory: __tests__ + run: | + echo "API_KEY=${{ secrets.API_KEY }}" >> .env + echo "BASE_URL=${{ secrets.BASE_URL }}" >> .env + + - name: Install dependencies for tests + working-directory: __tests__ + run: npm install + + - name: Make jest executable + working-directory: __tests__ + run: chmod +x ./node_modules/.bin/jest + + - name: Run tests + working-directory: __tests__ + run: npm run test + + release-please: + name: Create Release + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' && github.event_name == 'push' + needs: build-and-test + + steps: + - name: Create or Update Release PR + uses: googleapis/release-please-action@v4 + with: + release-type: node + config-file: .release-please-config.json + manifest-file: .release-please-manifest.json + token: ${{ secrets.ACTIONS_SECRET }} + env: + GITHUB_TOKEN: ${{ secrets.ACTIONS_SECRET }} \ No newline at end of file diff --git a/.release-please-config.json b/.release-please-config.json new file mode 100644 index 0000000..11da720 --- /dev/null +++ b/.release-please-config.json @@ -0,0 +1,33 @@ +{ + "packages": { + ".": { + "release-type": "node", + "package-name": "@qaflow/report", + "changelog-path": "CHANGELOG.md", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true, + "draft": false, + "prerelease": false, + "include-v-in-tag": true, + "pull-request-title-pattern": "chore(release): v${version}", + "changelog-sections": [ + { "type": "feat", "section": "Features", "hidden": false }, + { "type": "fix", "section": "Bug Fixes", "hidden": false }, + { "type": "docs", "section": "Documentation", "hidden": false }, + { "type": "perf", "section": "Performance Improvements", "hidden": false }, + { "type": "refactor", "section": "Code Refactoring", "hidden": false }, + { "type": "chore", "section": "Miscellaneous", "hidden": false }, + { "type": "style", "section": "Styles", "hidden": true }, + { "type": "test", "section": "Tests", "hidden": true } + ], + "extra-files": [ + { + "type": "json", + "path": "package.json", + "jsonpath": "$.version" + } + ] + } + }, + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" +} \ No newline at end of file diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..7352c48 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.0.0" +} \ No newline at end of file diff --git a/README.md b/README.md index b37d845..1ee9908 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,152 @@ -# qaflow-report -A module for test reporting, compatible with test frameworks. +# QAFlow Report + +QAFlow Report is a comprehensive reporting module for your test automation efforts. It seamlessly integrates with Playwright, Jest, and other test frameworks. + +## Installation + +```bash +npm install @qaflow/report +# or +yarn add @qaflow/report +# or +pnpm add @qaflow/report +``` + +## Quick Start + +### Creating a Configuration File + +To use QAFlow Report, you need to create a configuration file that contains your API key. You can generate this file using the following command: + +```bash +npx @qaflow/report init +``` + +This command will interactively prompt you for your API key and generate a `reporter.config.js` or `reporter.config.ts` file. + +Alternatively, you can specify your API key directly: + +```bash +npx @qaflow/report init --key= +``` + +The generated configuration file will look like this: + +#### `reporter.config.js` +```javascript +export default { + apiKey: 'YOUR_API_KEY_HERE' +}; +``` + +#### `reporter.config.ts` +```typescript +export default { + apiKey: 'YOUR_API_KEY_HERE' +}; +``` + +### Basic Usage + +To use the reporter in your test files: + +```javascript +// Import the reporter +import reporter from "@qaflow/report"; + +// Create a test +reporter.createTest( + "Login Test", // Test name + "Testing the login functionality of our application", // Description + { author: "QA Tester", email: "tester@example.com" }, // Tester info + { name: "Chrome", version: "118.0.0", os: "macOS", browser: "Chrome" } // Environment +); + +// Add test steps +await reporter.step("Navigate to the login page", () => { + return true; // Step successful +}); + +await reporter.step("Enter username", () => { + return true; +}); + +// End the test and retrieve results +const results = await reporter.end(); +console.log(`Total steps: ${results.summary.total}`); +console.log(`Passed steps: ${results.summary.passed}`); +console.log(`Failed steps: ${results.summary.failed}`); +console.log(`Skipped steps: ${results.summary.skipped}`); +``` + +## API Usage + +### `reporter.initialize(apiKey, options)` + +If you are not using a configuration file, you can initialize the reporter programmatically: + +```javascript +reporter.initialize("your-api-key-here"); +``` + +### `reporter.createTest(testName, description, tester, environment)` + +Creates a new test and registers it as the active test: + +```javascript +reporter.createTest( + "Search Test", + "Tests the search functionality on the homepage", + { author: "QA Tester", email: "tester@example.com" }, + { name: "Firefox", version: "115.0", os: "Windows" } +); +``` + +### `reporter.step(name, fn, options)` + +Adds a step to the active test and executes it: + +```javascript +// Successful step +await reporter.step("Navigate to homepage", () => { + return true; +}); + +// Failed step +await reporter.step("Perform login", () => { + throw new Error("Login failed"); +}); + +// Skipped step +await reporter.step("View profile", () => {}, { skipped: true }); + +// Step with screenshot +await reporter.step("Verify search results", () => { + return true; +}, { screenshot: "base64-screenshot-data" }); +``` + +### `reporter.end()` + +Ends the active test and sends results to the API: + +```javascript +const results = await reporter.end(); +console.log("Test result:", results); +``` + +## Documentation + +For detailed documentation, visit [QAFlow Docs](https://qaflow.tech/docs). + +## Website + +Learn more about QAFlow at [QAFlow Website](https://qaflow.tech/). + +## 📜 License +This project is licensed under the [MIT License](LICENSE). + +## 👤 Author +- GitHub: [@QA-Flow](https://github.com/QA-Flow) +- Author Github: [@dorukozgen](https://github.com/dorukozgen) +- LinkedIn: [Doruk](https://www.linkedin.com/in/dorukozgen) \ No newline at end of file