- π Overview
- β¨ Key Features
- ποΈ Architecture
- π Quick Start
- π Advanced Reporting
- π¨ Template Engine
- π Analytics Engine
- π§ Configuration
- π Documentation
- π§ͺ Test Suites
- π Multi-Language Support
- π± Mobile & Responsive
- π Integrations
- π Performance
- π€ Contributing
- π License
Phoenix HRM Test Automation Framework is a comprehensive, enterprise-grade testing solution designed specifically for Human Resource Management systems. Built with modern technologies and best practices, it provides robust test automation capabilities with advanced reporting, analytics, and templating features.
- Multi-Browser Support: Chrome, Firefox, Safari, Edge with WebDriver management
- Cross-Platform Testing: Windows, macOS, Linux compatibility
- Parallel Execution: Concurrent test execution with ThreadLocal management
- Data-Driven Testing: Excel, CSV, JSON, and database-driven test data
- API Testing: REST/SOAP API automation with comprehensive validations
- Mobile Testing: iOS and Android native and web app testing
- Database Testing: Direct database validations and data setup/cleanup
- Real-Time Dashboards: Interactive dashboards with live test execution monitoring
- Executive Reports: High-level KPI dashboards for stakeholders
- Detailed Test Reports: Comprehensive test execution reports with screenshots
- Email Notifications: Automated email reports with professional templates
- Historical Analysis: Trend analysis and performance tracking over time
- Custom Metrics: Configurable KPIs and success metrics
- Professional Branding: Phoenix HRM corporate identity integration
- Multi-Format Support: HTML, PDF, Word, Excel, Email templates
- Dynamic Content: Variable substitution with conditional logic
- Internationalization: Multi-language support (English, Spanish, extensible)
- Theme System: Default and dark themes with custom styling
- Template Inheritance: Parent/child template relationships
- Performance Optimized: Sub-3ms rendering with caching
- CI/CD Integration: Jenkins, GitLab CI, GitHub Actions, Azure DevOps
- Issue Tracking: Jira, Azure DevOps, GitHub Issues integration
- Communication: Slack, Microsoft Teams, Email notifications
- Cloud Storage: AWS S3, Azure Blob, Google Cloud Storage
- Monitoring: Prometheus, Datadog, New Relic integration
- Database: MySQL, PostgreSQL, Oracle, SQL Server support
Phoenix HRM Test Automation Framework
βββ π§ͺ Core Testing Engine
β βββ WebDriver Management & Browser Automation
β βββ Page Object Model Implementation
β βββ Test Data Management & Data Providers
β βββ Parallel Execution & Thread Management
βββ π Advanced Reporting & Analytics
β βββ Real-Time Dashboard Generator
β βββ Advanced Analytics Engine
β βββ Custom Report Generators
β βββ Data Export & Integration Utilities
βββ π¨ Template Engine
β βββ Variable Substitution & Dynamic Content
β βββ Theme Management & Branding
β βββ Internationalization & Localization
β βββ Template Validation & Optimization
βββ π Integration Layer
β βββ CI/CD Pipeline Integration
β βββ External Tool Connectors
β βββ Database Integration
β βββ Cloud Storage Integration
βββ βοΈ Configuration Management
βββ Environment Configuration
βββ Test Suite Configuration
βββ Reporting Configuration
βββ Integration Settings
- Page Object Model: Maintainable and reusable page representations
- Factory Pattern: Dynamic object creation and browser management
- Builder Pattern: Flexible configuration and report building
- Strategy Pattern: Pluggable algorithms for different browsers/platforms
- Observer Pattern: Event-driven reporting and notifications
- Template Method: Consistent test execution workflows
# Required Software
Java 17+ # OpenJDK or Oracle JDK
Maven 3.8+ # Build and dependency management
Git 2.30+ # Version control
Chrome/Firefox # Browsers for testing
# Optional but Recommended
Docker 20+ # Containerized testing
Node.js 16+ # Dashboard dependencies-
Clone the Repository
git clone https://github.com/phoenix-hrm/test-automation.git cd phoenix-hrm-test-automation -
Install Dependencies
mvn clean install
-
Configure Environment
cp src/test/resources/config/config.properties.example src/test/resources/config/config.properties # Edit configuration file with your settings -
Run Sample Tests
# Run all tests mvn test # Run specific test suite mvn test -Dsuite=smoke # Run with specific browser mvn test -Dbrowser=chrome -Dheadless=false
@Test
public class QuickStartTest extends BaseTest {
@Test(description = "Phoenix HRM Login Test")
public void testLogin() {
LoginPage loginPage = new LoginPage(driver);
DashboardPage dashboard = loginPage
.enterUsername("testuser@phoenix-hrm.com")
.enterPassword("SecurePassword123")
.clickLogin();
Assert.assertTrue(dashboard.isLoggedIn(), "User should be logged in");
reportStep("User logged in successfully", "PASS");
}
}- Success Rate Metrics: Overall test success rates and trends
- Performance KPIs: Test execution times and efficiency metrics
- Coverage Analysis: Feature coverage and test distribution
- Risk Assessment: Failed test impact analysis
- Test Execution Summary: Comprehensive test results with timing
- Screenshot Gallery: Visual evidence for failed tests
- Log Analysis: Detailed execution logs with filtering
- Environment Information: Test environment and configuration details
- Professional Templates: Phoenix HRM branded email reports
- Customizable Content: Configurable report sections
- Mobile Responsive: Optimized for all email clients
- Automated Distribution: Scheduled and triggered notifications
// Generate comprehensive report
ReportGenerator generator = new ReportGenerator.Builder()
.withTemplate("executive-summary")
.withTheme("phoenix-corporate")
.withLocalization("en_US")
.includeScreenshots(true)
.includePerformanceMetrics(true)
.build();
ReportResult result = generator.generateReport(testResults);π Phoenix HRM Test Execution Report
==========================================
π’ Suite: User Management Tests
ποΈ Build: BUILD-2024-001 (main branch)
β±οΈ Duration: 12m 45s
π Environment: QA Environment
π Results Summary:
β
Total Tests: 150
β
Passed: 142 (94.7%)
β Failed: 6 (4.0%)
βοΈ Skipped: 2 (1.3%)
π― Performance Metrics:
β‘ Fastest Test: UserAuditTest.testLoginAudit (650ms)
π Slowest Test: BulkOperationsTest.testBulkImport (3.2s)
π Average Duration: 1.28s per test
<!-- Basic Variables -->
<h1>{{suiteName}} - Test Results</h1>
<p>Build: {{buildNumber}} ({{buildBranch}})</p>
<!-- Nested Properties -->
<p>Browser: {{environment.browser}} {{environment.browserVersion}}</p>
<!-- Helper Functions -->
<p>Generated: {{formatDate reportDate "MMM dd, yyyy 'at' HH:mm:ss"}}</p>
<p>Success Rate: {{round multiply divide passedTests totalTests 100 1}}%</p>{{#if failedTests}}
<div class="alert alert-danger">
<h3>β οΈ Failed Tests Detected</h3>
<p>{{failedTests}} out of {{totalTests}} tests failed.</p>
</div>
{{else}}
<div class="alert alert-success">
<h3>π All Tests Passed!</h3>
<p>Excellent work! All {{totalTests}} tests executed successfully.</p>
</div>
{{/if}}<table class="test-results">
{{#each testResults}}
<tr class="{{lowercase status}}">
<td>{{className}}.{{methodName}}</td>
<td><span class="status-badge">{{status}}</span></td>
<td>{{duration}}ms</td>
<td>{{#if @first}}First{{else if @last}}Last{{else}}{{add @index 1}}{{/if}}</td>
</tr>
{{/each}}
</table>:root {
--primary-color: {{theme:primaryColor}};
--secondary-color: {{theme:secondaryColor}};
--background-color: {{theme:backgroundColor}};
--text-color: {{theme:textColor}};
}
.header {
background: linear-gradient(135deg, {{theme:primaryColor}}, {{theme:secondaryColor}});
color: white;
}<h1>{{i18n:test.results}}</h1>
<div class="stats">
<div class="stat-card">
<h3>{{i18n:total.tests}}</h3>
<p>{{totalTests}}</p>
</div>
<div class="stat-card">
<h3>{{i18n:passed.tests}}</h3>
<p>{{passedTests}}</p>
</div>
</div>| Helper | Description | Example |
|---|---|---|
formatDate |
Format dates with patterns | {{formatDate now "yyyy-MM-dd"}} |
uppercase |
Convert to uppercase | {{uppercase status}} |
add, subtract |
Math operations | {{add passedTests failedTests}} |
equals, greaterThan |
Logical comparisons | {{#if greaterThan passedTests 10}} |
length, first, last |
Collection operations | {{length testResults}} |
truncate |
Truncate strings | {{truncate errorMessage 100}} |
// Configure template engine
TemplateConfiguration config = new TemplateConfiguration.Builder()
.templateDirectory("src/test/resources/templates")
.outputDirectory("target/reports")
.enableCaching(true)
.defaultTheme("phoenix-corporate")
.defaultLocale("en_US")
.addGlobalVariable("frameworkVersion", "6.0")
.build();
ReportTemplateEngine engine = new ReportTemplateEngine(config);
// Render template
TemplateContext context = new TemplateContext(testData, "en_US", "default");
RenderResult result = engine.renderTemplate("detailed-report", context);
if (result.isSuccess()) {
System.out.println("Report generated: " + result.getOutputPath());
} else {
System.err.println("Errors: " + result.getErrors());
}- Success Rate Trends: Historical pass/fail rate analysis
- Performance Metrics: Test duration and efficiency tracking
- Failure Analysis: Root cause analysis and failure patterns
- Coverage Metrics: Feature and requirement coverage analysis
- Test Stability: Flakiness detection and reliability scoring
- Execution Efficiency: Resource utilization and optimization
- Risk Assessment: High-risk area identification
- Regression Analysis: Change impact assessment
- Failure Prediction: AI-powered test failure prediction
- Optimization Recommendations: Performance improvement suggestions
- Capacity Planning: Resource requirement forecasting
- Maintenance Insights: Test suite maintenance recommendations
// Generate analytics dashboard
AnalyticsEngine analytics = new AnalyticsEngine.Builder()
.withDataSource(testResultsDatabase)
.enablePredictiveAnalytics(true)
.withTimeRange(TimeRange.LAST_30_DAYS)
.includePerformanceMetrics(true)
.build();
AnalyticsDashboard dashboard = analytics.generateDashboard();
dashboard.addChart(ChartType.SUCCESS_RATE_TREND)
.addChart(ChartType.EXECUTION_TIME_DISTRIBUTION)
.addChart(ChartType.FAILURE_ANALYSIS)
.addKPI("overall_success_rate")
.addKPI("average_execution_time");
String dashboardHtml = dashboard.render();# Browser Configuration
browser.default=chrome
browser.headless=false
browser.window.maximize=true
browser.implicit.wait=10
browser.page.load.timeout=30
# Environment Configuration
environment.base.url=https://qa.phoenix-hrm.com
environment.api.base.url=https://api-qa.phoenix-hrm.com
environment.database.url=jdbc:mysql://qa-db.phoenix-hrm.com:3306/phoenix_hrm
environment.database.username=${DB_USERNAME}
environment.database.password=${DB_PASSWORD}
# Reporting Configuration
reporting.enabled=true
reporting.screenshot.on.failure=true
reporting.screenshot.on.success=false
reporting.template.theme=phoenix-corporate
reporting.email.notifications=true
reporting.email.recipients=qa-team@phoenix-hrm.com,dev-leads@phoenix-hrm.com
# Parallel Execution
parallel.execution.enabled=true
parallel.thread.count=4
parallel.suite.level=method
# Integration Configuration
integration.jira.enabled=true
integration.jira.url=https://phoenix-hrm.atlassian.net
integration.slack.webhook=${SLACK_WEBHOOK_URL}
integration.aws.s3.bucket=phoenix-hrm-test-reportsTemplateConfiguration templateConfig = new TemplateConfiguration.Builder()
.templateDirectory("src/test/resources/templates")
.outputDirectory("target/reports")
.enableCaching(true)
.enableValidation(true)
.defaultLocale("en_US")
.defaultTheme("phoenix-corporate")
.maxCacheSize(100)
.addGlobalVariable("companyName", "Phoenix HRM")
.addGlobalVariable("supportEmail", "support@phoenix-hrm.com")
.addGlobalVariable("frameworkVersion", "6.0")
.build();<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Phoenix HRM Test Suite" parallel="methods" thread-count="4">
<parameter name="browser" value="chrome"/>
<parameter name="environment" value="qa"/>
<test name="Smoke Tests">
<classes>
<class name="com.phoenix.hrm.tests.smoke.LoginTest"/>
<class name="com.phoenix.hrm.tests.smoke.DashboardTest"/>
<class name="com.phoenix.hrm.tests.smoke.NavigationTest"/>
</classes>
</test>
<test name="User Management Tests">
<packages>
<package name="com.phoenix.hrm.tests.user"/>
</packages>
</test>
<test name="Regression Tests">
<groups>
<run>
<include name="regression"/>
</run>
</groups>
<packages>
<package name="com.phoenix.hrm.tests"/>
</packages>
</test>
</suite>- Quick Start Guide: Get up and running in 10 minutes
- Installation Guide: Detailed setup instructions
- Configuration Guide: Framework configuration options
- First Test Tutorial: Create your first test case
- Architecture Overview: Framework design and components
- Design Patterns: Applied design patterns and rationale
- Best Practices: Recommended coding and testing practices
- Performance Guide: Optimization tips and techniques
- Page Object Model: POM implementation guide
- Data-Driven Testing: Test data management strategies
- API Testing Guide: REST/SOAP API automation
- Mobile Testing Guide: iOS and Android testing
- Database Testing: Database validation techniques
- Reporting Guide: Generate and customize reports
- Template Engine Guide: Create custom templates
- Analytics Guide: Leverage analytics features
- Dashboard Guide: Interactive dashboard creation
- CI/CD Integration: Jenkins, GitLab CI, GitHub Actions
- Jira Integration: Issue tracking integration
- Slack Integration: Team communication setup
- Cloud Integration: AWS, Azure, GCP integration
- Custom Extensions: Extend framework capabilities
- Plugin Development: Create custom plugins
- Troubleshooting: Common issues and solutions
- Migration Guide: Upgrade from previous versions
mvn test -Dsuite=authentication
# Covers: Login, logout, password reset, 2FA, session management, security policiesmvn test -Dsuite=user-management
# Covers: User creation, profile management, roles, permissions, bulk operationsmvn test -Dsuite=reporting
# Covers: Report generation, dashboard views, analytics, data export, schedulingmvn test -Dsuite=integration
# Covers: API integrations, third-party services, data synchronization, webhooksmvn test -Dsuite=performance
# Covers: Load testing, stress testing, response times, resource utilizationmvn test -Dsuite=mobile
# Covers: Mobile app testing, responsive design, touch interactions, device compatibilitymvn test -Dsuite=api
# Covers: REST APIs, authentication, data validation, error handling, rate limitingmvn test -Dsuite=security
# Covers: SQL injection, XSS, authentication bypass, authorization, data privacy# Run tests by tags
mvn test -Dgroups=smoke,regression
# Run tests with specific configuration
mvn test -Dbrowser=firefox -Denvironment=staging -Dheadless=true
# Run tests with custom reporting
mvn test -Dreporting.template=executive-summary -Dreporting.theme=dark
# Run tests with parallel execution
mvn test -Dparallel.methods=4 -Dparallel.classes=2
# Run tests with specific locale
mvn test -Dlocale=es_ES -Dreporting.language=spanish| Language | Code | Status | Coverage |
|---|---|---|---|
| πΊπΈ English | en_US |
β Complete | 100% |
| πͺπΈ Spanish | es_ES |
β Complete | 100% |
| π«π· French | fr_FR |
π§ In Progress | 75% |
| π©πͺ German | de_DE |
π§ In Progress | 60% |
| π―π΅ Japanese | ja_JP |
π Planned | 0% |
| π¨π³ Chinese | zh_CN |
π Planned | 0% |
- Template Messages: All UI text translated
- Date Formatting: Locale-specific date/time formats
- Number Formatting: Currency and number formatting
- Cultural Adaptation: Color schemes and layout adjustments
// Set global locale
TemplateContext context = new TemplateContext(data, "es_ES", "default");
// Use localized messages
<h1>{{i18n:test.results}}</h1> <!-- "Resultados de Prueba" in Spanish -->
<p>{{i18n:total.tests}}: {{totalTests}}</p> <!-- "Total de Pruebas: 150" --># English (en_US)
test.results=Test Results
total.tests=Total Tests
passed.tests=Passed Tests
failed.tests=Failed Tests
success.rate=Success Rate
# Spanish (es_ES)
test.results=Resultados de Prueba
total.tests=Total de Pruebas
passed.tests=Pruebas Exitosas
failed.tests=Pruebas Fallidas
success.rate=Tasa de Γxito- Native Apps: iPhone and iPad app testing
- Web Apps: Safari mobile web testing
- Device Cloud: Integration with BrowserStack, Sauce Labs
- Simulator Support: Xcode Simulator integration
- Native Apps: Phone and tablet app testing
- Web Apps: Chrome mobile web testing
- Emulator Support: Android Studio emulator integration
- Real Device Testing: USB debugging and wireless testing
- Viewport Testing: Multiple screen sizes and resolutions
- Orientation Testing: Portrait and landscape modes
- Touch Interaction: Tap, swipe, pinch, and zoom gestures
- Performance Testing: Mobile-specific performance metrics
@Test
public class MobileLoginTest extends BaseMobileTest {
@Test(description = "Mobile login functionality")
public void testMobileLogin() {
MobileLoginPage loginPage = new MobileLoginPage(mobileDriver);
loginPage.tapUsernameField()
.enterUsername("testuser@phoenix-hrm.com")
.tapPasswordField()
.enterPassword("SecurePassword123")
.tapLoginButton();
MobileDashboardPage dashboard = new MobileDashboardPage(mobileDriver);
Assert.assertTrue(dashboard.isUserLoggedIn(), "User should be logged in");
// Test responsive elements
Assert.assertTrue(dashboard.isNavigationMenuVisible(),
"Navigation menu should be visible on mobile");
Assert.assertTrue(dashboard.areCardElementsProperlyAligned(),
"Dashboard cards should be properly aligned for mobile view");
}
}pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/phoenix-hrm/test-automation.git'
}
}
stage('Test Execution') {
parallel {
stage('Smoke Tests') {
steps {
sh 'mvn test -Dsuite=smoke -Dbrowser=chrome'
}
}
stage('API Tests') {
steps {
sh 'mvn test -Dsuite=api'
}
}
}
}
stage('Generate Reports') {
steps {
sh 'mvn exec:java -Dexec.mainClass="com.phoenix.hrm.reporting.ReportGenerator"'
}
}
stage('Publish Results') {
steps {
publishHTML([
allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'target/reports',
reportFiles: 'phoenix-hrm-detailed-report.html',
reportName: 'Phoenix HRM Test Report'
])
}
}
}
post {
always {
archiveArtifacts artifacts: 'target/reports/**/*', allowEmptyArchive: true
emailext (
subject: 'Phoenix HRM Test Results - Build ${BUILD_NUMBER}',
body: 'Test execution completed. Check the attached report for details.',
to: 'qa-team@phoenix-hrm.com'
)
}
}
}name: Phoenix HRM Test Automation
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 2 * * *' # Daily at 2 AM
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
browser: [chrome, firefox]
suite: [smoke, regression, api]
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
- name: Run Tests
run: mvn test -Dsuite=${{ matrix.suite }} -Dbrowser=${{ matrix.browser }}
- name: Generate Reports
run: mvn exec:java -Dexec.mainClass="com.phoenix.hrm.reporting.ReportGenerator"
- name: Upload Test Reports
uses: actions/upload-artifact@v3
if: always()
with:
name: test-reports-${{ matrix.browser }}-${{ matrix.suite }}
path: target/reports/
- name: Notify Slack
if: always()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
channel: '#qa-automation'
webhook_url: ${{ secrets.SLACK_WEBHOOK }}SlackNotification slack = new SlackNotification.Builder()
.withWebhookUrl(System.getenv("SLACK_WEBHOOK_URL"))
.withChannel("#qa-automation")
.withUsername("Phoenix HRM Test Bot")
.build();
TestExecutionSummary summary = getTestExecutionSummary();
slack.sendTestResults(summary);EmailNotification email = new EmailNotification.Builder()
.withSmtpServer("smtp.phoenix-hrm.com")
.withAuthentication("automation@phoenix-hrm.com", password)
.withTemplate("test-execution-summary")
.withRecipients("qa-team@phoenix-hrm.com", "dev-leads@phoenix-hrm.com")
.build();
email.sendTestResults(testResults);JiraIntegration jira = new JiraIntegration.Builder()
.withUrl("https://phoenix-hrm.atlassian.net")
.withCredentials("automation@phoenix-hrm.com", apiToken)
.withProject("PHX")
.build();
// Automatically create issues for failed tests
for (TestResult failedTest : getFailedTests()) {
jira.createBugTicket(failedTest);
}
// Update existing issues with test results
jira.updateTestExecutionResults(testCycle, testResults);- Rendering Speed: 454.5 templates/second
- Average Render Time: 2.2ms per template
- Memory Usage: < 50MB for typical report generation
- Concurrency: Supports 100+ concurrent template operations
- Cache Hit Rate: 95%+ for frequently used templates
- Parallel Execution: Up to 10 concurrent browser instances
- Test Startup Time: < 3 seconds average per test
- Memory Footprint: 200-500MB per browser instance
- Database Operations: < 100ms average query time
- API Response Time: < 2 seconds for typical API tests
- Report Generation: < 5 seconds for comprehensive reports
- Dashboard Rendering: < 1 second for real-time updates
- Data Export: 10,000+ records per second
- Email Delivery: < 30 seconds end-to-end
- Cloud Storage: < 10 seconds for report uploads
# Browser Performance
browser.page.load.timeout=15
browser.implicit.wait=5
browser.script.timeout=10
# Parallel Execution
parallel.thread.count=8
parallel.timeout=300
parallel.retry.count=2
# Memory Management
jvm.heap.size=-Xmx4g
jvm.gc.algorithm=-XX:+UseG1GC
# Database Connection Pool
database.pool.min.size=5
database.pool.max.size=20
database.pool.timeout=30000// Enable performance monitoring
@Listener
public class PerformanceMonitor implements ITestListener {
@Override
public void onTestStart(ITestResult result) {
PerformanceTracker.startTracking(result.getMethod().getMethodName());
}
@Override
public void onTestSuccess(ITestResult result) {
PerformanceMetrics metrics = PerformanceTracker.endTracking(
result.getMethod().getMethodName()
);
ReportManager.addPerformanceMetrics(metrics);
}
}| Metric | Target | Current | Status |
|---|---|---|---|
| Test Execution Time | < 5 min | 3.2 min | β |
| Report Generation | < 10 sec | 4.5 sec | β |
| Dashboard Load Time | < 2 sec | 1.1 sec | β |
| Memory Usage | < 2 GB | 1.4 GB | β |
| CPU Utilization | < 80% | 65% | β |
| Database Response | < 200ms | 95ms | β |
-
Fork & Clone
git clone https://github.com/yourusername/phoenix-hrm-test-automation.git cd phoenix-hrm-test-automation -
Development Environment
# Install dependencies mvn clean install # Set up pre-commit hooks pre-commit install # Run quality checks mvn checkstyle:check spotbugs:check pmd:check
-
Run Tests
# Run all tests mvn test # Run specific test suite mvn test -Dsuite=unit-tests
- Java Style: Follow Google Java Style Guide
- Testing: Maintain 80%+ code coverage
- Documentation: Document all public APIs
- Performance: No performance regressions
- Security: Follow secure coding practices
- Create Feature Branch:
git checkout -b feature/amazing-feature - Make Changes: Follow coding standards and add tests
- Run Quality Checks:
mvn verify - Update Documentation: Update relevant documentation
- Submit PR: Create detailed pull request with description
- Code Review: Address reviewer feedback
- Merge: Squash merge after approval
- Use the bug report template
- Include steps to reproduce
- Attach relevant logs and screenshots
- Specify environment details
- Use the feature request template
- Describe the problem being solved
- Provide detailed requirements
- Include use cases and examples
Copyright (c) 2024 Phoenix HRM Test Automation Framework
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Selenium WebDriver: Apache License 2.0
- TestNG: Apache License 2.0
- Maven: Apache License 2.0
- Jackson: Apache License 2.0
- SLF4J: MIT License