# springbootplaywrighttwo **Repository Path**: sara861122/springbootplaywrighttwo ## Basic Information - **Project Name**: springbootplaywrighttwo - **Description**: 基于Java 8 + Spring Boot 2.6 + Playwright 1.40 + TestNG 7.4 + Maven构建的企业级SauceDemo电商网站自动化测试框架,集成智能重试机制、多用户支持、多浏览器兼容、页面对象模型(POM)设计模式和CI/CD流水线,实现完整购物流程的端到端测试自动化。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-08-13 - **Last Updated**: 2025-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SauceDemo 自动化测试 - Java + Playwright [![Gitee Go CI](https://gitee.com/your-username/saucedemo-playwright-tests/workflows/Gitee%20Go%20CI/CD%20Pipeline/badge.svg)](https://gitee.com/your-username/saucedemo-playwright-tests/actions) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Java](https://img.shields.io/badge/Java-8%2B-orange.svg)](https://www.oracle.com/java/) [![Maven](https://img.shields.io/badge/Maven-3.6%2B-blue.svg)](https://maven.apache.org/) [![Playwright](https://img.shields.io/badge/Playwright-1.40.0-green.svg)](https://playwright.dev/) [![TestNG](https://img.shields.io/badge/TestNG-7.4.0-red.svg)](https://testng.org/) 这个项目使用Java和Playwright实现了SauceDemo网站的完整购物流程自动化测试,包含完整的重试机制、配置管理和测试监听器。 ## 🎯 测试覆盖的完整流程 1. ✅ **登录** - 使用 standard_user 账号 2. ✅ **浏览商品** - 查看产品页面 3. ✅ **添加商品** - 将 Sauce Labs Fleece Jacket 加入购物车 4. ✅ **查看购物车** - 验证商品和数量 5. ✅ **填写信息** - 输入 Sara Luo, 28003 6. ✅ **确认订单** - 查看价格明细 ($53.99) 7. ✅ **完成购买** - 收到确认消息 ## 📁 项目结构 ``` src/test/java/com/sara/playwright/ ├── base/ │ └── TestBase.java # 测试基类 ├── config/ │ └── TestConfig.java # 配置管理类 ├── listeners/ # TestNG监听器 │ ├── RetryAnalyzer.java # 重试分析器 │ ├── RetryListener.java # 重试监听器 │ └── TestResultListener.java # 测试结果监听器 ├── pages/ # 页面对象模型 │ ├── LoginPage.java # 登录页面 │ ├── InventoryPage.java # 商品页面 │ ├── CartPage.java # 购物车页面 │ ├── CheckoutStepOnePage.java # 结账信息页面 │ ├── CheckoutStepTwoPage.java # 订单概览页面 │ └── CheckoutCompletePage.java # 订单完成页面 ├── tests/ # 测试用例 │ ├── SauceDemoCompleteFlowTest.java # 主测试类 │ └── RetryDemoTest.java # 重试功能演示 ├── utils/ │ └── RetryUtils.java # 重试工具类 ├── runner/ │ └── TestRunner.java # 测试运行器 └── PlaywrightApplicationTests.java # Spring Boot测试类 src/test/resources/ ├── test-config.json # 测试配置文件 └── testng.xml # TestNG配置文件 ``` ## 🚀 快速开始 ### 环境要求 - **Java**: JDK 8 或更高版本 - **Maven**: 3.6 或更高版本 - **操作系统**: Windows、macOS、Linux - **内存**: 建议 4GB 或更多 ### 安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/your-username/saucedemo-playwright-tests.git cd saucedemo-playwright-tests ``` 2. **安装依赖** ```bash mvn clean install ``` 3. **安装浏览器** ```bash mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install" ``` 4. **运行测试** ```bash # 使用交互式脚本 ./run-tests.sh # 或直接运行Maven命令 mvn test -Dplaywright.browser=firefox -Dplaywright.headless=false ``` ## 🧪 运行测试的多种方式 ### 方法一:交互式脚本(推荐) ```bash ./run-tests.sh ``` ### 方法二:Maven命令 ```bash # 运行所有测试 mvn test # 运行特定测试方法 mvn test -Dtest=SauceDemoCompleteFlowTest#testCompleteShoppingFlow # 使用不同用户类型 mvn test -Dtest.user.type=standard mvn test -Dtest.user.type=problem # 使用不同浏览器 mvn test -Dplaywright.browser=firefox mvn test -Dplaywright.browser=chromium # 无头模式运行 mvn test -Dplaywright.headless=true ``` ### 方法三:Shell脚本 ```bash # 带重试功能的测试 ./run-tests-with-retry.sh # JSON配置测试 ./run-with-config.sh # 重试功能演示 ./demo-retry.sh ``` ## ⚙️ 配置说明 ### JSON配置文件 (test-config.json) ```json { "users": { "standard": { "username": "standard_user", "password": "secret_sauce" }, "problem": { "username": "problem_user", "password": "secret_sauce" }, "performance": { "username": "performance_glitch_user", "password": "secret_sauce" } }, "browser": { "type": "firefox", "headless": false, "slowMo": 300 }, "features": { "retryFailedTests": 3, "enableScreenshots": true } } ``` ### 系统属性 - `test.user.type`: 用户类型 (standard/problem/performance/locked/error/visual) - `playwright.browser`: 浏览器类型 (firefox/chromium/webkit) - `playwright.headless`: 是否无头模式 (true/false) - `test.retry.count`: 重试次数 ## 🌟 核心特性 ### 智能重试机制 - ✅ 自动重试失败的测试 - ✅ 支持指数退避策略 - ✅ 可配置重试次数和延迟 - ✅ 重试统计和监控 ### 多用户支持 - ✅ 标准用户 (standard_user) - ✅ 问题用户 (problem_user) - ✅ 性能用户 (performance_glitch_user) - ✅ 错误用户 (error_user) - ✅ 视觉用户 (visual_user) - ✅ 锁定用户 (locked_out_user) ### 多浏览器支持 - ✅ Firefox (推荐) - ✅ Chromium - ✅ WebKit (Safari) ### 配置管理 - ✅ JSON配置文件 - ✅ 多环境支持 - ✅ 运行时参数覆盖 ## 📊 测试用例 ### SauceDemoCompleteFlowTest 1. **testCompleteShoppingFlow()** - 完整购物流程 2. **testLogin()** - 登录功能 3. **testAddMultipleItemsToCart()** - 多商品添加 4. **testContinueShopping()** - 继续购物 5. **testCheckoutInformationValidation()** - 结账验证 6. **testBackToHomeAfterOrderComplete()** - 返回首页 7. **testLogout()** - 登出功能 8. **testCompleteShoppingFlowWithLogout()** - 完整流程含登出 ### RetryDemoTest 1. **testBasicRetry()** - 基本重试演示 2. **testPageOperationWithRetry()** - 页面操作重试 3. **testConditionalRetry()** - 条件重试 4. **testExponentialBackoffRetry()** - 指数退避重试 5. **testRetryWithResult()** - 带返回值重试 ## 🔧 CI/CD集成 ### Gitee Go CI/CD 项目已集成Gitee Go CI/CD,支持: - ✅ 多Java版本测试 (8, 11, 17) - ✅ 多浏览器测试 (Firefox, Chromium) - ✅ 自动化测试报告 - ✅ 重试功能验证 - ✅ 多用户类型测试 ### 本地CI测试 ```bash # 模拟CI环境测试 ./scripts/ci-test-local.sh # 检查CI状态 ./scripts/check-ci-status.sh ``` ## 📚 文档 - [重试功能详细说明](RETRY_FEATURES.md) - [TestRunner使用指南](TESTRUNNER_GUIDE.md) - [贡献指南](CONTRIBUTING.md) - [更新日志](CHANGELOG.md) ## 🐛 故障排除 ### 常见问题 1. **浏览器未安装**: 运行 `mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"` 2. **测试超时**: 增加 `browser.timeout` 配置值 3. **元素定位失败**: 检查页面加载状态,启用截图功能 ### 获取帮助 - 查看 [Issues](https://gitee.com/your-username/saucedemo-playwright-tests/issues) - 阅读 [Wiki](https://gitee.com/your-username/saucedemo-playwright-tests/wikis) - 参考 [FAQ](https://gitee.com/your-username/saucedemo-playwright-tests/wikis/FAQ) ## 🤝 贡献 欢迎贡献代码!请阅读 [贡献指南](CONTRIBUTING.md) 了解详情。 1. Fork 项目 2. 创建功能分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 📄 许可证 本项目采用 [MIT 许可证](LICENSE)。 ## 🙏 致谢 - [Playwright](https://playwright.dev/) - 现代化的浏览器自动化框架 - [TestNG](https://testng.org/) - 强大的测试框架 - [SauceDemo](https://www.saucedemo.com/) - 提供测试网站 --- ⭐ 如果这个项目对你有帮助,请给个Star支持一下!