# Automation Script Generator
## š Project Mission: Hybrid AI Automation Framework (Notion -> Playwright)
This project creates an autonomous end-to-end testing framework that bridges the gap between manual test case management and automated execution. It leverages Generative AI to automatically generate robust Playwright test scripts from Notion test tickets.
## šÆ Objectives
1. **Read**: Fetch test scenarios directly from a Notion Database.
2. **Generate**: Create executable Playwright (TypeScript) scripts automatically using **Google Gemini**.
3. **Execute**: Run tests with a "Self-Healing" mechanism for resilient locators.
4. **Report**: Generate detailed reports via Allure and reflect status updates back to Notion.
## š ļø Tech Stack
* **Language**: TypeScript, Node.js (v20+)
* **Framework**: [Playwright](https://playwright.dev/)
* **AI Model**: Google Gemini (`gemini-2.0-flash` via `@google/genai` SDK)
* **Integration**: Notion API (`@notionhq/client`)
* **Reporting**: Allure Report
## š Directory Structure
```text
/
āāā .agent/rules/ # Antigravity context rules
āāā config/ # Configuration files
ā āāā notion.config.ts # Notion API keys and DB IDs
āāā src/
ā āāā generator/ # THE BUILDER
ā ā āāā fetcher.ts # Pulls from Notion
ā ā āāā translator.ts # Gemini Agent (Notion -> TS Code)
ā ā āāā writer.ts # Saves .spec.ts files
ā āāā framework/ # THE RUNNER
ā ā āāā pages/ # Page Objects (POM)
ā ā āāā actions/ # Self-healing wrappers
ā āāā tests/ # Generated Spec files live here
āāā playwright.config.ts
āāā .env # Contains API Keys
āāā package.json
```
## āļø Setup & Installation
1. **Clone the repository:**
```bash
git clone <repository-url>
cd automation-script-generator
```
2. **Install dependencies:**
```bash
npm install
```
3. **Environment Configuration:**
Create a `.env` file in the root directory and add your keys:
```env
GEMINI_API_KEY=your_google_gemini_api_key
NOTION_TOKEN=your_notion_integration_token
NOTION_DATABASE_ID=your_notion_database_id
```
## š Usage
### 1. Generate Tests
To fetch "Ready for Automation" tickets from Notion and generate Playwright test files with **strict Page Object Model separation**:
```bash
npx ts-node src/generator/main.ts
```
* **Artifacts**:
* `src/framework/pages/*.page.ts`: Page Objects (private selectors, public methods).
* `src/tests/[module]/[module].data.ts`: Shared test data per module.
* `src/tests/[module]/[id]...spec.ts`: Clean test specs.
### 2. Run Tests
To execute the generated Playwright tests:
```bash
npm test
```
* **Video**: Recorded for ALL runs (available in Allure report).
* **Screenshots**: Captured only on failure.
### 3. View Reports
To generate and view the Allure test report:
```bash
npm run test:report # Generates report (cleans old results)
npm run test:open # Opens report in browser
```
## š§ Smart Actions (Self-Healing)
The framework includes a `SmartPage` wrapper that handles flaky selectors. If a primary selector fails, it attempts to "heal" by using fallback strategies (like text hints) and logs the event, preventing brittle test failures.