# 11Automation CLI
<br>

<p align="center">
  <b>A powerful CLI and Python package to seamlessly upload your automated test execution reports to the 11Automation Dashboard.</b>
</p>

---

## ⚡ Features

- **Upload Instantly:** Upload PyTest, Cucumber, and Newman JSON reports directly to your 11Automation Dashboard project.
- **Smart Tags:** Supports parsing complex tag expressions (e.g. `["@smoke and @wallet"]`).
- **Flexible Authentication:** Authenticate via project tokens, Environment Variables, or email & password.
- **Zero Coding Required:** Configure once with a simple json file and trigger from anywhere in your CI/CD pipelines.

## 📦 Installation

Install the package via `pip`:

```bash
pip install 11automation
```

## 🚀 Quick Start

### 1. Initialize Configuration
Navigate to your project directory and run the initialization command. This creates the configuration structure.

```bash
11automation init
```
This generates an `11automation/config.json` file in your current directory with default values.

You can also configure the project directly from the command line by passing arguments. This will instantly populate or update the `config.json` file:
```bash
11automation init --projectId YOUR_PROJECT_ID --tags "smoke" "regression" --typeOfReport pytest
```
### 2. Configure Your Project
Edit the generated `11automation/config.json` with your project's specifics.

```json
{
  "typeOfReport": "pytest",
  "projectId": "YOUR_PROJECT_ID",
  "file": "path/to/report.json",
  "testEnv": "QA",
  "testType": "WEB",
  "tags": ["smoke", "regression"],
  "browser": "chrome",
  "browserVersion": "latest",
  "iterationId": "Batch1",
  "baseUrl": "https://app.11automation.com/api/v1/public"
}
```

*Don't want to expose your token in code?* Remove the `"token"` field from the config and export it as an environment variable in your CI/CD tool:
```bash
export DASHBOARD_TOKEN="YOUR_API_TOKEN"
```

### 3. Upload Report
Once your config is set and your testing framework has generated the JSON report, run:

```bash
11automation start
```

That's it! 🚀 Your test execution report is now beautifully cataloged on the 11Automation Dashboard.

## 🔧 Configuration Reference

| Parameter        | Description                                                                                     | Default Value          |
|------------------|-------------------------------------------------------------------------------------------------|------------------------|
| `typeOfReport`   | The framework generating the report (`pytest`, `cucumber`, `newman`, `normal`)                  | `pytest`               |
| `projectId`      | Your unique project ID from the 11Automation dashboard                                          | `""`                   |
| `file`           | Relative or absolute path to the generated JSON test report                                     | `report.json`          |
| `testEnv`        | Environment where the test triggered (`QA`, `Staging`, `Prod`, etc.)                            | `QA`                   |
| `testType`       | Type of Testing (`WEB`, `API`, `MOBILE`)                                                        | `WEB`                  |
| `tags`           | Array of strings representing your test suites/scenario tags (`["smoke", "regression"]`)        | `["smoke"]`            |
| `browser`        | Name of the executed browser (`chrome`, `firefox`, `safari`, `edge`)                            | `chrome`               |
| `browserVersion` | Version of the browser                             | `latest`               |
| `token`          | Personal access token. Overridden by the `DASHBOARD_TOKEN` environment variable if present.     | `""`                   |

## 🔑 Authentication Methods
11Automation gives you several options for secure authentication:
1. **Config Token**: Place `"token": "YOUR_TOKEN"` directly in the `config.json`.
2. **Environment Variable**: Export `DASHBOARD_TOKEN` on your machine or CI/CD runner.
3. **Email & Password**: You can provide `"email"` and `"password"` fields in `config.json` and the CLI will automatically securely negotiate an authentication token. (Token/Environment Token takes precedent).

## ✨ Tag Parsing Support
To make QA tagging flexible, `11automation` CLI automatically normalizes boolean-style or nested BDD tags coming from your project definitions before sending them to the dashboard:
- `["@smoke and @wallet"]`   ➡️  `["smoke", "wallet"]`
- `["smoke, regression"]`    ➡️  `["smoke", "regression"]`
- `["(checkout)"]`           ➡️  `["checkout"]`

## 🤝 Support
If you encounter any issues integrating this into your Python, Node, Java, or Ruby pipelines, please reach out directly to the 11Automation maintainers.
