{"id":26645917,"url":"https://github.com/varadinos/automationcamp-playwright","last_synced_at":"2026-04-18T00:02:57.144Z","repository":{"id":283954345,"uuid":"952989263","full_name":"varadinos/AutomationCamp-Playwright","owner":"varadinos","description":"This is a Page Object Model (POM) structured Playwright with TypeScript project for automating the web application Automation Camp.","archived":false,"fork":false,"pushed_at":"2025-03-23T08:58:58.000Z","size":962,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T09:34:54.113Z","etag":null,"topics":["automation","automation-testing","github-actions","page-object-model","playwright","playwright-testing","playwright-typescript","typescript"],"latest_commit_sha":null,"homepage":"https://play1.automationcamp.ir/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/varadinos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-22T10:07:57.000Z","updated_at":"2025-03-23T08:59:01.000Z","dependencies_parsed_at":"2025-03-23T09:47:51.157Z","dependency_job_id":null,"html_url":"https://github.com/varadinos/AutomationCamp-Playwright","commit_stats":null,"previous_names":["varadinos/automationcamp-playwright"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varadinos%2FAutomationCamp-Playwright","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varadinos%2FAutomationCamp-Playwright/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varadinos%2FAutomationCamp-Playwright/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varadinos%2FAutomationCamp-Playwright/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/varadinos","download_url":"https://codeload.github.com/varadinos/AutomationCamp-Playwright/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245366201,"owners_count":20603439,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","automation-testing","github-actions","page-object-model","playwright","playwright-testing","playwright-typescript","typescript"],"created_at":"2025-03-24T22:46:42.895Z","updated_at":"2025-10-14T19:37:52.255Z","avatar_url":"https://github.com/varadinos.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Playwright Tests](https://github.com/varadinos/AutomationCamp/actions/workflows/playwright-tests.yml/badge.svg)\n\n\n# POM Playwright with TypeScript - Automation Project\n\n## Overview\n\nThis is a **Page Object Model (POM)** structured **Playwright with TypeScript** project for automating the web application **[Automation Camp](https://play1.automationcamp.ir/)**.\n\n## Features\n\n- **End-to-End Automation** using Playwright.\n- **Page Object Model (POM) Design** for better maintainability.\n- **TypeScript Support** for strong typing and better code quality.\n- **Playwright Test Runner** for running and managing test cases.\n- **Fixtures Implementation** for reusable test setup.\n- **Assertions with Expect API** for validation.\n- **GitHub Actions:** Integrates continuous integration workflows using GitHub Actions.​\n\n\n## Installation\n\nEnsure you have **Node.js** installed. Then, follow these steps:\n\n```sh\n# Clone the repository\ngit clone \u003crepository-url\u003e\ncd \u003cproject-folder\u003e\n\n# Install dependencies\nnpm install\n```\n\n## Project Structure\n\n```\n📂 project-root\n├── 📂 tests         # Test cases\n├── 📂 pages         # Page Object Model classes\n├── 📂 setup         # Fixtures setup\n├── 📂 utils         # Helper functions (if any)\n├── 📂 data          # Stores test data (if any)\n├── 📄 playwright.config.ts  # Playwright configuration\n├── 📄 package.json  # Project dependencies\n├── 📄 README.md     # Documentation\n```\n\n## Running Tests\n\n### Run all tests:\n\n```sh\nnpx playwright test\n```\n\n### Run a specific test:\n\n```sh\nnpx playwright test tests/advanced.spec.ts\n```\n\n### Run tests in headed mode:\n\n```sh\nnpx playwright test --headed\n```\n\n### Generate and view reports:\n\n```sh\nnpx playwright test --reporter=html\nnpx playwright show-report\n```\n\n## Writing Tests\n\n- Test cases are located inside the `tests` folder.\n- Page object files are inside the `pages` folder.\n- Fixtures are located in the `setup` folder.\n- Helper scripts are located in the `utils` folder.\n- Test data is located in the `data` folder.\n\n### Example Test (Using Fixtures and POM)\n\n```typescript\nimport { test, expect } from '../setup/fixtures';\nimport { AdvancedTopicsPage } from \"../pages/AdvancedTopicsPage\";\n\ntest('Verify book rating submission displays Well done message', async ({ advancedTopicsPage }) =\u003e {\n    await advancedTopicsPage.setStarRatingValue(advancedTopicsPage.starRating);\n    await advancedTopicsPage.checkRatingButton.click();\n    await expect(advancedTopicsPage.wellDoneLabel).toBeVisible();\n    await expect(advancedTopicsPage.wellDoneLabel).toHaveText('Well done!');\n});\n```\n\n### Example Fixtures Setup (`fixtures.ts`)\n\n```typescript\nimport { test as base } from '@playwright/test';\nimport playwright from 'playwright';\nimport { HomePage } from '../pages/HomePage';\nimport { AdvancedTopicsPage } from '../pages/AdvancedTopicsPage';\n\ntype Fixtures = {\n    homePage: HomePage;\n    advancedTopicsPage: AdvancedTopicsPage;\n};\n\nexport const test = base.extend\u003cFixtures\u003e({\n    browser: async ({}, use) =\u003e {\n        const browser = await playwright.chromium.launch({ headless: false, args: ['--start-maximized'] });\n        await use(browser);\n        await browser.close();\n    },\n    page: async ({ browser }, use) =\u003e {\n        const page = await browser.newPage();\n        page.setViewportSize({ width: 1920, height: 1040 });\n        await use(page);\n        await page.close();\n    },\n    homePage: async ({ page }, use) =\u003e {\n        const homePage = new HomePage();\n        await use(homePage);\n    },\n    advancedTopicsPage: async ({ page }, use) =\u003e {\n        const advancedTopicsPage = new AdvancedTopicsPage(page);\n        advancedTopicsPage.goTo();\n        await use(advancedTopicsPage);\n    }\n});\n\nexport { expect } from '@playwright/test';\n```\n\n## Contributing\n\nFeel free to submit pull requests or open issues if you find any improvements or bugs!\n\n## License\n\nThis project is licensed under the MIT License, which permits free use, modification, and distribution of the code. However, attribution is required.\n\n## Attribution\n\nThis project was created by **Stoyan Varadinov (varadinos)**. Feel free to use and modify it, but please credit the original author.\n\n## Author\n\n**Stoyan Varadinov**  \n[GitHub Profile](https://github.com/varadinos)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaradinos%2Fautomationcamp-playwright","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvaradinos%2Fautomationcamp-playwright","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaradinos%2Fautomationcamp-playwright/lists"}