Loading…
Workflow goal
Optimize test scripts to follow coding guidleines and use existing framework functions
Variable Source Value Phase Status
Test Script to Optimize
Empty
Selenium Function Library
Empty
Frontend Application Structure
Empty

Test Script to Optimize

Selenium Function Library

Frontend Application Structure

1 Script Analysis
Analyze test script for quality issues
pending
Value will be available once processing is complete.
Input will be available once processing is complete.
System Prompt (raw)
You are a code quality analysis expert specializing in test automation.
Your task is to analyze test scripts and identify quality issues, code smells, and improvement opportunities.

Focus on identifying:
1. Code quality metrics
2. Maintainability issues
3. Performance problems
4. Test design flaws
5. Missing best practices
User Prompt (raw)
Test Script to Analyze: {userInput}

Perform comprehensive analysis:

1. **Code Quality Issues**
   - Code duplication
   - Complex methods
   - Long methods
   - Magic numbers/strings
   - Poor naming conventions

2. **Test Design Problems**
   - Missing assertions
   - Incomplete test coverage
   - Poor test isolation
   - Inadequate error handling
   - Missing documentation

3. **Performance Issues**
   - Hardcoded waits
   - Inefficient element lookups
   - Redundant operations
   - Missing parallel execution support

4. **Maintainability Problems**
   - Hardcoded values
   - Tight coupling
   - Missing abstraction
   - Direct WebDriver usage
   - No Page Object Model

5. **Framework Violations**
   - Not using available functions
   - Custom implementations of standard features
   - Inconsistent patterns

Document all issues with severity levels (Critical/Major/Minor).
2 Anti-pattern Identification
Identify specific anti-patterns
pending
Value will be available once processing is complete.
Input will be available once processing is complete.
System Prompt (raw)
You are an anti-pattern detection expert in test automation.
Your task is to identify specific anti-patterns and provide targeted solutions.
User Prompt (raw)
Script Analysis: {script_analysis}

Framework Functions: {selenium_function_library}

Identify and categorize anti-patterns:

1. **Wait Anti-patterns**
   ```
   Anti-pattern: Thread.sleep(5000)
   Solution: waitForElementVisible(element, timeout)
   Impact: Flaky tests, slow execution
   ```

2. **Locator Anti-patterns**
   ```
   Anti-pattern: By.xpath("//div[3]/span[2]/button")
   Solution: By.id("submit-button") or data-testid
   Impact: Brittle tests, maintenance nightmare
   ```

3. **Assertion Anti-patterns**
   ```
   Anti-pattern: No assertions or single assertion
   Solution: Multiple specific assertions
   Impact: Incomplete validation
   ```

4. **Data Anti-patterns**
   ```
   Anti-pattern: Hardcoded test data
   Solution: Data providers, external files
   Impact: Limited test scenarios
   ```

5. **Structure Anti-patterns**
   ```
   Anti-pattern: All logic in test methods
   Solution: Page Object Model
   Impact: Code duplication, poor maintainability
   ```

For each anti-pattern found:
- Provide specific examples from the code
- Suggest concrete solutions
- Estimate improvement impact
- Priority for fixing (High/Medium/Low)
3 Page Object Extraction
Extract reusable Page Object components
pending
Value will be available once processing is complete.
Input will be available once processing is complete.
System Prompt (raw)
You are a Page Object Model design expert.
Your task is to identify and extract reusable page components from the test script.
User Prompt (raw)
Anti-pattern Analysis: {antipattern_identification}

Frontend Structure: {frontend_application}

Extract Page Objects:

1. **Identify Pages**
   - Login Page
   - Dashboard Page
   - Policy Management Page
   - Deductible Selection Modal
   - Claims Page

2. **Extract Elements**
   ```javascript
   class PolicyPage {
       elements = {
           addPolicyButton: By.id('add-policy'),
           policyTypeSelect: By.id('policy-type'),
           coverageInput: By.name('coverage'),
           deductibleSelect: By.id('deductible'),
           submitButton: By.css('.submit-btn')
       }
   }
   ```

3. **Create Page Methods**
   ```javascript
   async createPolicy(policyData) {
       await this.click(this.elements.addPolicyButton);
       await this.selectPolicyType(policyData.type);
       await this.enterCoverage(policyData.coverage);
       await this.selectDeductible(policyData.deductible);
       await this.submit();
   }
   ```

4. **Extract Workflows**
   - Login workflow
   - Policy creation workflow
   - Deductible selection workflow
   - Premium verification workflow

5. **Common Components**
   - Navigation menu
   - Confirmation modals
   - Error messages
   - Loading indicators

Create comprehensive Page Object structure.
4 Refactored Script
Refactor script to use framework functions
pending
Value will be available once processing is complete.
Input will be available once processing is complete.
System Prompt (raw)
You are a test refactoring expert specializing in framework adoption.
Your task is to refactor the test script to use framework functions and best practices.
User Prompt (raw)
Page Objects: {page_object_extraction}

Framework Functions: {selenium_function_library}

Anti-patterns: {antipattern_identification}

Refactor the test script:

## Before (Spaghetti Code)
```javascript
driver.get("http://example.com");
Thread.sleep(3000);
driver.findElement(By.xpath("//input[@type='text']")).sendKeys("user");
driver.findElement(By.xpath("//input[@type='password']")).sendKeys("pass");
driver.findElement(By.xpath("//button")).click();
Thread.sleep(5000);
```

## After (Clean Framework Code)
```javascript
class LoginPage extends BasePage {
    async login(username, password) {
        await this.navigate(this.url);
        await this.enterText(this.elements.username, username);
        await this.enterText(this.elements.password, password);
        await this.click(this.elements.loginButton);
        await this.waitForPageLoad();
    }
}

// In test
await loginPage.login(testData.username, testData.password);
```

Refactor all code sections:
1. Replace direct WebDriver calls with framework functions
2. Implement Page Object Model
3. Use proper wait strategies
4. Externalize test data
5. Add comprehensive error handling
6. Implement reusable workflows
7. Add logging and reporting

Generate complete refactored script.
5 Performance Optimization
Add performance optimizations
pending
Value will be available once processing is complete.
Input will be available once processing is complete.
System Prompt (raw)
You are a performance optimization expert for test automation.
Your task is to optimize the test script for speed and reliability.
User Prompt (raw)
Refactored Script: {refactored_script}

Framework Functions: {selenium_function_library}

Apply performance optimizations:

1. **Wait Strategy Optimization**
   - Replace implicit waits with explicit waits
   - Use appropriate wait conditions
   - Implement smart retry mechanisms
   - Add timeout configurations

2. **Parallel Execution Support**
   ```javascript
   describe.parallel('Policy Tests', () => {
       it('test case 1', async () => {...});
       it('test case 2', async () => {...});
   });
   ```

3. **Resource Management**
   - Reuse browser sessions where possible
   - Implement connection pooling
   - Cache frequently accessed data
   - Lazy load page objects

4. **Element Location Optimization**
   - Use fastest locator strategies (ID > name > CSS > XPath)
   - Cache element references
   - Batch element operations
   - Minimize DOM traversal

5. **Test Data Optimization**
   - Load test data once per suite
   - Use data factories for dynamic data
   - Implement data cleanup strategies
   - Optimize file I/O operations

6. **Execution Optimization**
   - Skip unnecessary navigation
   - Combine related assertions
   - Use headless mode for CI
   - Implement smart screenshots

Generate performance-optimized test script.
6 Optimized Test Suite
Generate complete optimized test suite
pending
Value will be available once processing is complete.
Input will be available once processing is complete.
System Prompt (raw)
You are a test suite architect specializing in creating production-ready test automation.
Your task is to generate a complete, optimized test suite.
User Prompt (raw)
Optimized Script: {performance_optimization}

Page Objects: {page_object_extraction}

Generate complete optimized test suite:

# Optimized Test Suite Structure

```
optimized-tests/
├── config/
│   ├── environments.json
│   ├── test.config.js
│   └── performance.config.js
├── page-objects/
│   ├── base/
│   │   └── BasePage.js
│   ├── pages/
│   │   ├── LoginPage.js
│   │   ├── PolicyPage.js
│   │   └── DeductibleModal.js
│   └── components/
│       └── Navigation.js
├── tests/
│   ├── smoke/
│   │   └── critical-path.test.js
│   ├── regression/
│   │   └── full-suite.test.js
│   └── performance/
│       └── load-tests.js
├── data/
│   ├── test-data.json
│   └── environments.json
├── utils/
│   ├── helpers.js
│   ├── reporters.js
│   └── performance-monitor.js
├── reports/
└── package.json
```

## Configuration
```javascript
// performance.config.js
module.exports = {
    parallel: true,
    workers: 4,
    timeout: 30000,
    retries: 2,
    headless: process.env.CI === 'true',
    screenshots: 'on-failure',
    video: false,
    trace: 'retain-on-failure'
};
```

## Optimized Test Example
```javascript
describe('Deductible Selection - Optimized', () => {
    let context;
    let page;
    let policyPage;
    
    beforeAll(async () => {
        // Shared setup for all tests
        context = await browser.newContext();
        page = await context.newPage();
        policyPage = new PolicyPage(page);
    });
    
    afterAll(async () => {
        await context.close();
    });
    
    it('should select $300 deductible efficiently', async () => {
        await policyPage.quickNavigate(); // Optimized navigation
        await policyPage.selectDeductibleFast('300'); // Batch operations
        await policyPage.verifyPremiumReduction(); // Smart assertions
    });
});
```

## Performance Metrics
- Execution time: -60% reduction
- Flakiness: -80% reduction
- Maintenance effort: -70% reduction
- Code coverage: +30% increase

## Execution Commands
```json
{
    "scripts": {
        "test:optimized": "playwright test --config=performance.config.js",
        "test:parallel": "playwright test --workers=4",
        "test:profile": "playwright test --profile",
        "test:benchmark": "node utils/performance-monitor.js"
    }
}
```

Generate the complete optimized test suite with all components.