socialseed-e2e 0.1.0__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/PKG-INFO +64 -27
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/README.md +62 -25
- socialseed_e2e-0.1.2/docs/AGENT_GUIDE.md +662 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/pyproject.toml +1 -1
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/setup.cfg +1 -1
- socialseed_e2e-0.1.2/src/socialseed_e2e/__init__.py +215 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/__version__.py +2 -2
- socialseed_e2e-0.1.2/src/socialseed_e2e/cli.py +774 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/base_page.py +368 -49
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/config_loader.py +15 -3
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/headers.py +11 -4
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/loaders.py +6 -4
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/test_orchestrator.py +2 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/core/test_runner.py +487 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/agent_docs/AGENT_GUIDE.md.template +412 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/agent_docs/EXAMPLE_TEST.md.template +152 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/agent_docs/FRAMEWORK_CONTEXT.md.template +55 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/agent_docs/WORKFLOW_GENERATION.md.template +182 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/data_schema.py.template +157 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/e2e.conf.template +39 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/service_page.py.template +138 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/test_module.py.template +60 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/templates/verify_installation.py +192 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/utils/__init__.py +29 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/utils/ai_generator.py +463 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/utils/pydantic_helpers.py +392 -0
- socialseed_e2e-0.1.2/src/socialseed_e2e/utils/state_management.py +312 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e.egg-info/PKG-INFO +64 -27
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e.egg-info/SOURCES.txt +13 -1
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/test_doctor.py +1 -1
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/test_new_test.py +3 -1
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/test_run.py +14 -1
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/unit/test_template_engine.py +3 -3
- socialseed_e2e-0.1.2/tests/unit/utils/test_ai_generator.py +157 -0
- socialseed_e2e-0.1.2/tests/unit/utils/test_pydantic_helpers.py +116 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/validate_installation.py +2 -2
- socialseed_e2e-0.1.0/src/socialseed_e2e/__init__.py +0 -51
- socialseed_e2e-0.1.0/src/socialseed_e2e/cli.py +0 -611
- socialseed_e2e-0.1.0/src/socialseed_e2e/templates/data_schema.py.template +0 -116
- socialseed_e2e-0.1.0/src/socialseed_e2e/templates/e2e.conf.template +0 -20
- socialseed_e2e-0.1.0/src/socialseed_e2e/templates/service_page.py.template +0 -83
- socialseed_e2e-0.1.0/src/socialseed_e2e/templates/test_module.py.template +0 -46
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/CHANGELOG.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/CODE_OF_CONDUCT.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/CONTRIBUTING.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/LICENSE +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/MANIFEST.in +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/README.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/api/cli.rst +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/api/core.rst +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/api/models.rst +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/api/utils.rst +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/api-reference.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/changelog.rst +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/cli-reference.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/configuration.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/github-pages-setup.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/index.rst +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/installation.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/license.rst +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/mock-api.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/quickstart.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/testing-guide.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/docs/writing-tests.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/README.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/api.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/services/items-api/data_schema.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/services/items-api/items_api_page.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/services/items-api/modules/01_create_item.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/services/items-api/modules/02_list_items.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/services/items-api/modules/03_get_item.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/services/items-api/modules/04_update_item.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/01-basic-crud/services/items-api/modules/05_delete_item.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/02-auth-jwt/README.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/02-auth-jwt/api.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/02-auth-jwt/services/auth-api/auth_api_page.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/02-auth-jwt/services/auth-api/data_schema.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/02-auth-jwt/services/auth-api/modules/01_register_flow.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/02-auth-jwt/services/auth-api/modules/02_login_flow.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/02-auth-jwt/services/auth-api/modules/03_refresh_token_flow.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/02-auth-jwt/services/auth-api/modules/04_protected_endpoints.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/README.md +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/orders-service/orders_api.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/payment-service/payment_api.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/orders-api/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/orders-api/modules/01_orders_test.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/orders-api/modules/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/orders-api/orders_api_page.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/payment-api/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/payment-api/modules/01_payment_test.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/payment-api/modules/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/payment-api/payment_api_page.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/users-api/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/users-api/modules/01_users_test.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/users-api/modules/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/services/users-api/users_api_page.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/examples/03-microservices/users-service/users_api.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/setup.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/check_deps.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/config.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/interfaces.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/core/models.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/services/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/templates/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/templates/config.py.template +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/utils/template_engine.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e/utils/validators.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e.egg-info/dependency_links.txt +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e.egg-info/entry_points.txt +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e.egg-info/requires.txt +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/src/socialseed_e2e.egg-info/top_level.txt +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/conftest.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/fixtures/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/fixtures/mock_api.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/conftest.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/test_config.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/test_error_handling.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/test_init.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/test_new_service.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/cli/test_workflows.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/integration/test_mock_api_integration.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/unit/__init__.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/unit/test_base_page.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/unit/test_config_loader.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/unit/test_imports_compatibility.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/unit/test_loaders.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/unit/test_orchestrator.py +0 -0
- {socialseed_e2e-0.1.0 → socialseed_e2e-0.1.2}/tests/unit/test_validators.py +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: socialseed-e2e
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Framework E2E para testing de APIs REST con Playwright
|
|
5
|
-
Author: Dairon Pérez
|
|
5
|
+
Author: Dairon Pérez Frías
|
|
6
6
|
Author-email: Dairon Pérez Frías <dairon.perezfrias@gmail.com>
|
|
7
7
|
License: MIT
|
|
8
8
|
Project-URL: Homepage, https://github.com/daironpf/socialseed-e2e
|
|
@@ -54,12 +54,13 @@ Dynamic: license-file
|
|
|
54
54
|
|
|
55
55
|
[](https://pypi.org/project/socialseed-e2e/)
|
|
56
56
|
[](https://pypi.org/project/socialseed-e2e/)
|
|
57
|
-
[](https://github.com/daironpf/socialseed-e2e/actions)
|
|
58
57
|
[](https://daironpf.github.io/socialseed-e2e/)
|
|
59
58
|
[](LICENSE)
|
|
60
59
|
[](https://pypi.org/project/socialseed-e2e/)
|
|
61
60
|
|
|
62
61
|
> **The ultimate E2E testing framework for REST APIs - Built for developers and AI agents**
|
|
62
|
+
>
|
|
63
|
+
> ⚡️ **NEW v2.0**: AI-First design with automatic error prevention, camelCase serialization support, and zero-config setup for Java backends
|
|
63
64
|
|
|
64
65
|
**One-liner:** Test your REST APIs with 10x less code using intelligent scaffolding, automatic test discovery, and stateful test chaining. Perfect for both manual testing and AI-generated test suites.
|
|
65
66
|
|
|
@@ -74,12 +75,68 @@ Dynamic: license-file
|
|
|
74
75
|
### Key Differentiators
|
|
75
76
|
|
|
76
77
|
- **🤖 AI-Native Architecture**: Structured protocols (`IServicePage`, `ITestModule`) designed for automated test generation
|
|
78
|
+
- **🧠 .agent Awareness**: Automatically generates AI documentation (`.agent/`) for self-guided test generation by LLMs
|
|
77
79
|
- **⚡ 10x Less Code**: Stateful test chaining and automatic discovery eliminate boilerplate
|
|
78
80
|
- **🧪 Built-in Mocking**: Flask-based mock API for testing without external dependencies
|
|
79
81
|
- **🔧 Zero Configuration**: Sensible defaults with YAML/JSON override support
|
|
80
82
|
|
|
81
83
|
---
|
|
82
84
|
|
|
85
|
+
## 🚀 Quick Start
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Install
|
|
89
|
+
pip install socialseed-e2e
|
|
90
|
+
playwright install chromium
|
|
91
|
+
|
|
92
|
+
# Initialize project
|
|
93
|
+
e2e init my-api-tests
|
|
94
|
+
cd my-api-tests
|
|
95
|
+
|
|
96
|
+
# Create service and test
|
|
97
|
+
e2e new-service users-api
|
|
98
|
+
e2e new-test login --service users-api
|
|
99
|
+
|
|
100
|
+
# Run tests
|
|
101
|
+
e2e run
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
📚 **[Complete Quick Start Guide →](https://daironpf.github.io/socialseed-e2e/quickstart.html)**
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 🤖 Workflow with AI Agents
|
|
109
|
+
|
|
110
|
+
socialseed-e2e is designed to be the first **AI-Native Testing Framework**. When you initialize a project with `e2e init`, a `.agent/` folder is created with specific instructions for LLMs (Claude, GPT-4, etc.).
|
|
111
|
+
|
|
112
|
+
### How to use it:
|
|
113
|
+
|
|
114
|
+
1. **Initialize**: Run `e2e init` in your project root.
|
|
115
|
+
2. **Prompt your Agent**:
|
|
116
|
+
> "Read the documentation in the `.agent/` folder to understand the testing framework. Then, scan my API controllers in `../src/controllers/` and generate the corresponding E2E tests following the framework patterns."
|
|
117
|
+
3. **Execute**: Run `e2e run` to verify the generated tests.
|
|
118
|
+
|
|
119
|
+
The `.agent` folder contains:
|
|
120
|
+
- **`AGENT_GUIDE.md`**: ⭐ **START HERE** - Complete guide with error prevention patterns, camelCase serialization, and common pitfalls to avoid
|
|
121
|
+
- `FRAMEWORK_CONTEXT.md`: Architecture and core concepts.
|
|
122
|
+
- `WORKFLOW_GENERATION.md`: Step-by-step guide for generating tests.
|
|
123
|
+
- `EXAMPLE_TEST.md`: Gold standard code examples.
|
|
124
|
+
|
|
125
|
+
### 🛡️ AI-First Error Prevention (v2.0)
|
|
126
|
+
|
|
127
|
+
The framework now includes automatic safeguards for AI-generated code:
|
|
128
|
+
|
|
129
|
+
- ✅ **Absolute imports only** - No more `ImportError` from relative imports
|
|
130
|
+
- ✅ **CamelCase serialization** - Automatic Pydantic aliases for Java backends
|
|
131
|
+
- ✅ **Dependency management** - `requirements.txt` includes email-validator
|
|
132
|
+
- ✅ **Method naming** - `do_*` prefix prevents attribute/method conflicts
|
|
133
|
+
- ✅ **Header handling** - Manual authentication management (no missing methods)
|
|
134
|
+
- ✅ **Verification script** - Run `python verify_installation.py` to check setup
|
|
135
|
+
|
|
136
|
+
**Result:** AI agents can generate working E2E tests with minimal or no human intervention.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
83
140
|
## 🏗️ Architecture
|
|
84
141
|
|
|
85
142
|
### Hexagonal Design
|
|
@@ -143,29 +200,6 @@ graph TD;
|
|
|
143
200
|
|
|
144
201
|
---
|
|
145
202
|
|
|
146
|
-
## 🚀 Quick Start
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
# Install
|
|
150
|
-
pip install socialseed-e2e
|
|
151
|
-
playwright install chromium
|
|
152
|
-
|
|
153
|
-
# Initialize project
|
|
154
|
-
e2e init my-api-tests
|
|
155
|
-
cd my-api-tests
|
|
156
|
-
|
|
157
|
-
# Create service and test
|
|
158
|
-
e2e new-service users-api
|
|
159
|
-
e2e new-test login --service users-api
|
|
160
|
-
|
|
161
|
-
# Run tests
|
|
162
|
-
e2e run
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
📚 **[Complete Quick Start Guide →](https://daironpf.github.io/socialseed-e2e/quickstart.html)**
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
203
|
## 📦 Installation
|
|
170
204
|
|
|
171
205
|
```bash
|
|
@@ -215,6 +249,7 @@ pytest --cov=socialseed_e2e --cov-report=html
|
|
|
215
249
|
- ✅ **Mock API**: Flask-based server for integration testing
|
|
216
250
|
- ✅ **CI/CD**: GitHub Actions configured (CI, Release, Docs)
|
|
217
251
|
- ✅ **Documentation**: Complete guides hosted on GitHub Pages
|
|
252
|
+
- ✅ **AI-Ready**: Perfect for automated test generation workflows
|
|
218
253
|
|
|
219
254
|
### In Progress
|
|
220
255
|
- 🚧 HTML reports with detailed metrics
|
|
@@ -261,9 +296,11 @@ This project recognizes AI agents as legitimate co-authors:
|
|
|
261
296
|
- **Claude (Anthropic)** - Documentation, feature suggestions, bug fixes
|
|
262
297
|
|
|
263
298
|
See [AI_CONTRIBUTORS.md](AI_CONTRIBUTORS.md) for full details and contribution philosophy.
|
|
264
|
-
|
|
299
|
+
this list need updates
|
|
265
300
|
---
|
|
266
301
|
|
|
302
|
+
|
|
303
|
+
|
|
267
304
|
## 📚 Documentation
|
|
268
305
|
|
|
269
306
|
All documentation is hosted on **GitHub Pages** and automatically deployed on every push to main:
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://pypi.org/project/socialseed-e2e/)
|
|
4
4
|
[](https://pypi.org/project/socialseed-e2e/)
|
|
5
|
-
[](https://github.com/daironpf/socialseed-e2e/actions)
|
|
6
5
|
[](https://daironpf.github.io/socialseed-e2e/)
|
|
7
6
|
[](LICENSE)
|
|
8
7
|
[](https://pypi.org/project/socialseed-e2e/)
|
|
9
8
|
|
|
10
9
|
> **The ultimate E2E testing framework for REST APIs - Built for developers and AI agents**
|
|
10
|
+
>
|
|
11
|
+
> ⚡️ **NEW v2.0**: AI-First design with automatic error prevention, camelCase serialization support, and zero-config setup for Java backends
|
|
11
12
|
|
|
12
13
|
**One-liner:** Test your REST APIs with 10x less code using intelligent scaffolding, automatic test discovery, and stateful test chaining. Perfect for both manual testing and AI-generated test suites.
|
|
13
14
|
|
|
@@ -22,12 +23,68 @@
|
|
|
22
23
|
### Key Differentiators
|
|
23
24
|
|
|
24
25
|
- **🤖 AI-Native Architecture**: Structured protocols (`IServicePage`, `ITestModule`) designed for automated test generation
|
|
26
|
+
- **🧠 .agent Awareness**: Automatically generates AI documentation (`.agent/`) for self-guided test generation by LLMs
|
|
25
27
|
- **⚡ 10x Less Code**: Stateful test chaining and automatic discovery eliminate boilerplate
|
|
26
28
|
- **🧪 Built-in Mocking**: Flask-based mock API for testing without external dependencies
|
|
27
29
|
- **🔧 Zero Configuration**: Sensible defaults with YAML/JSON override support
|
|
28
30
|
|
|
29
31
|
---
|
|
30
32
|
|
|
33
|
+
## 🚀 Quick Start
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Install
|
|
37
|
+
pip install socialseed-e2e
|
|
38
|
+
playwright install chromium
|
|
39
|
+
|
|
40
|
+
# Initialize project
|
|
41
|
+
e2e init my-api-tests
|
|
42
|
+
cd my-api-tests
|
|
43
|
+
|
|
44
|
+
# Create service and test
|
|
45
|
+
e2e new-service users-api
|
|
46
|
+
e2e new-test login --service users-api
|
|
47
|
+
|
|
48
|
+
# Run tests
|
|
49
|
+
e2e run
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
📚 **[Complete Quick Start Guide →](https://daironpf.github.io/socialseed-e2e/quickstart.html)**
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 🤖 Workflow with AI Agents
|
|
57
|
+
|
|
58
|
+
socialseed-e2e is designed to be the first **AI-Native Testing Framework**. When you initialize a project with `e2e init`, a `.agent/` folder is created with specific instructions for LLMs (Claude, GPT-4, etc.).
|
|
59
|
+
|
|
60
|
+
### How to use it:
|
|
61
|
+
|
|
62
|
+
1. **Initialize**: Run `e2e init` in your project root.
|
|
63
|
+
2. **Prompt your Agent**:
|
|
64
|
+
> "Read the documentation in the `.agent/` folder to understand the testing framework. Then, scan my API controllers in `../src/controllers/` and generate the corresponding E2E tests following the framework patterns."
|
|
65
|
+
3. **Execute**: Run `e2e run` to verify the generated tests.
|
|
66
|
+
|
|
67
|
+
The `.agent` folder contains:
|
|
68
|
+
- **`AGENT_GUIDE.md`**: ⭐ **START HERE** - Complete guide with error prevention patterns, camelCase serialization, and common pitfalls to avoid
|
|
69
|
+
- `FRAMEWORK_CONTEXT.md`: Architecture and core concepts.
|
|
70
|
+
- `WORKFLOW_GENERATION.md`: Step-by-step guide for generating tests.
|
|
71
|
+
- `EXAMPLE_TEST.md`: Gold standard code examples.
|
|
72
|
+
|
|
73
|
+
### 🛡️ AI-First Error Prevention (v2.0)
|
|
74
|
+
|
|
75
|
+
The framework now includes automatic safeguards for AI-generated code:
|
|
76
|
+
|
|
77
|
+
- ✅ **Absolute imports only** - No more `ImportError` from relative imports
|
|
78
|
+
- ✅ **CamelCase serialization** - Automatic Pydantic aliases for Java backends
|
|
79
|
+
- ✅ **Dependency management** - `requirements.txt` includes email-validator
|
|
80
|
+
- ✅ **Method naming** - `do_*` prefix prevents attribute/method conflicts
|
|
81
|
+
- ✅ **Header handling** - Manual authentication management (no missing methods)
|
|
82
|
+
- ✅ **Verification script** - Run `python verify_installation.py` to check setup
|
|
83
|
+
|
|
84
|
+
**Result:** AI agents can generate working E2E tests with minimal or no human intervention.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
31
88
|
## 🏗️ Architecture
|
|
32
89
|
|
|
33
90
|
### Hexagonal Design
|
|
@@ -91,29 +148,6 @@ graph TD;
|
|
|
91
148
|
|
|
92
149
|
---
|
|
93
150
|
|
|
94
|
-
## 🚀 Quick Start
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
# Install
|
|
98
|
-
pip install socialseed-e2e
|
|
99
|
-
playwright install chromium
|
|
100
|
-
|
|
101
|
-
# Initialize project
|
|
102
|
-
e2e init my-api-tests
|
|
103
|
-
cd my-api-tests
|
|
104
|
-
|
|
105
|
-
# Create service and test
|
|
106
|
-
e2e new-service users-api
|
|
107
|
-
e2e new-test login --service users-api
|
|
108
|
-
|
|
109
|
-
# Run tests
|
|
110
|
-
e2e run
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
📚 **[Complete Quick Start Guide →](https://daironpf.github.io/socialseed-e2e/quickstart.html)**
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
151
|
## 📦 Installation
|
|
118
152
|
|
|
119
153
|
```bash
|
|
@@ -163,6 +197,7 @@ pytest --cov=socialseed_e2e --cov-report=html
|
|
|
163
197
|
- ✅ **Mock API**: Flask-based server for integration testing
|
|
164
198
|
- ✅ **CI/CD**: GitHub Actions configured (CI, Release, Docs)
|
|
165
199
|
- ✅ **Documentation**: Complete guides hosted on GitHub Pages
|
|
200
|
+
- ✅ **AI-Ready**: Perfect for automated test generation workflows
|
|
166
201
|
|
|
167
202
|
### In Progress
|
|
168
203
|
- 🚧 HTML reports with detailed metrics
|
|
@@ -209,9 +244,11 @@ This project recognizes AI agents as legitimate co-authors:
|
|
|
209
244
|
- **Claude (Anthropic)** - Documentation, feature suggestions, bug fixes
|
|
210
245
|
|
|
211
246
|
See [AI_CONTRIBUTORS.md](AI_CONTRIBUTORS.md) for full details and contribution philosophy.
|
|
212
|
-
|
|
247
|
+
this list need updates
|
|
213
248
|
---
|
|
214
249
|
|
|
250
|
+
|
|
251
|
+
|
|
215
252
|
## 📚 Documentation
|
|
216
253
|
|
|
217
254
|
All documentation is hosted on **GitHub Pages** and automatically deployed on every push to main:
|