A comprehensive platform designed to help QA engineers and developers practice test automation with real-world scenarios and challenges. This application provides a wide range of testing opportunities through various interactive components and edge cases commonly found in web applications.
-
Form Handling & Validation
- Dynamic input validation
- Error message handling
- Form submission scenarios
-
Interactive Elements
- Drag and drop functionality
- Dynamic content loading
- Hover states and animations
- Context menus
- Key press events
-
File Operations
- File upload with drag & drop
- File download handling
- Multiple file formats support
-
Advanced Features
- Authentication flows
- A/B testing scenarios
- Exit intent detection
- Shadow DOM manipulation
- Iframe interactions
- Clone the repository:
git clone https://github.com/moatazeldebsy/test-automation-practice.git
cd test-automation-practice
- Install dependencies:
npm install
- Start the development server:
npm run dev
Here are some examples of how to interact with key features:
// Example test for form validation
test('should show error for invalid email', async () => {
await page.fill('[data-test="email-input"]', 'invalid-email');
await page.click('[data-test="submit-button"]');
expect(await page.isVisible('[data-test="email-error"]')).toBeTruthy();
});
// Example test for drag and drop functionality
test('should reorder items via drag and drop', async () => {
await page.dragAndDrop(
'[data-test="drag-handle-1"]',
'[data-test="drag-handle-2"]'
);
});
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- Write clear, descriptive commit messages
- Update documentation for any new features
- Add tests for new functionality
- Follow the existing code style
- Keep pull requests focused on a single feature
- Moataz Nabil - Project Owner