haltest 1.0.0 → 1.0.3
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.
- package/README.md +121 -0
- package/backend/.husky/_/applypatch-msg +2 -0
- package/backend/.husky/_/commit-msg +2 -0
- package/backend/.husky/_/h +22 -0
- package/backend/.husky/_/husky.sh +9 -0
- package/backend/.husky/_/post-applypatch +2 -0
- package/backend/.husky/_/post-checkout +2 -0
- package/backend/.husky/_/post-commit +2 -0
- package/backend/.husky/_/post-merge +2 -0
- package/backend/.husky/_/post-rewrite +2 -0
- package/backend/.husky/_/pre-applypatch +2 -0
- package/backend/.husky/_/pre-auto-gc +2 -0
- package/backend/.husky/_/pre-commit +2 -0
- package/backend/.husky/_/pre-merge-commit +2 -0
- package/backend/.husky/_/pre-push +2 -0
- package/backend/.husky/_/pre-rebase +2 -0
- package/backend/.husky/_/prepare-commit-msg +2 -0
- package/backend/.husky/pre-commit +4 -0
- package/backend/.prettierrc.json +7 -0
- package/backend/.turbo/turbo-lint$colon$fix.log +5 -0
- package/backend/.turbo/turbo-lint.log +5 -0
- package/backend/.turbo/turbo-test.log +480 -0
- package/backend/.vscode/settings.json +22 -0
- package/backend/API_DOCUMENTATION_GUIDE.md +120 -0
- package/backend/README.md +101 -0
- package/backend/__tests__/api.test.js +197 -0
- package/backend/__tests__/errorHandler.test.js +163 -0
- package/backend/__tests__/execute_js_logic.test.js +139 -0
- package/backend/__tests__/implementation_verify.test.js +112 -0
- package/backend/__tests__/launchBrowser.test.js +70 -0
- package/backend/__tests__/logger.test.js +85 -0
- package/backend/__tests__/security.test.js +119 -0
- package/backend/__tests__/validator.test.js +136 -0
- package/backend/app.js +170 -0
- package/backend/check_anthropic.js +2 -0
- package/backend/check_google.js +2 -0
- package/backend/config/i18n.js +29 -0
- package/backend/config/mockData.js +190 -0
- package/backend/config/paths.js +19 -0
- package/backend/controllers/action.controller.js +4137 -0
- package/backend/controllers/chat.controller.js +113 -0
- package/backend/controllers/execution.controller.js +0 -0
- package/backend/controllers/inspector.controller.js +144 -0
- package/backend/controllers/keys.controller.js +57 -0
- package/backend/controllers/run.controller.js +147 -0
- package/backend/database/index.js +41 -0
- package/backend/database/init.js +94 -0
- package/backend/database/models/Edge.js +34 -0
- package/backend/database/models/Flow.js +45 -0
- package/backend/database/models/Node.js +40 -0
- package/backend/database/models/Project.js +30 -0
- package/backend/database/models/Run.js +51 -0
- package/backend/database/models/StepResult.js +55 -0
- package/backend/database.sqlite +0 -0
- package/backend/debug-schemas.js +23 -0
- package/backend/debug-swagger.js +5 -0
- package/backend/locales/en.json +298 -0
- package/backend/locales/es.json +274 -0
- package/backend/log/access.log +0 -0
- package/backend/logs/access.log +1820 -0
- package/backend/logs/test_errors.log +4 -0
- package/backend/logs/test_listen_events.log +1 -0
- package/backend/middlewares/auth.middleware.js +52 -0
- package/backend/middlewares/errorHandler.js +47 -0
- package/backend/middlewares/logger.js +53 -0
- package/backend/middlewares/security.js +80 -0
- package/backend/middlewares/validateSchema.js +49 -0
- package/backend/middlewares/validator.js +96 -0
- package/backend/package.json +86 -0
- package/backend/playwright-report/index.html +85 -0
- package/backend/playwright.config.ts +79 -0
- package/backend/pnpm-lock.yaml +3482 -0
- package/backend/public/app/_redirects +1 -0
- package/backend/public/app/assets/CDWEKZTF-Dt77QWs-.js +1220 -0
- package/backend/public/app/assets/haltest_logo-CPCHSGNz.jpeg +0 -0
- package/backend/public/app/assets/index-C37xcdTn.css +1 -0
- package/backend/public/app/assets/index-LXKmc4f2.js +352 -0
- package/backend/public/app/favicon.ico +0 -0
- package/backend/public/app/images/haltest_logo.ico +0 -0
- package/backend/public/app/images/haltest_logo.jpeg +0 -0
- package/backend/public/app/images/haltest_pricing.jpg +0 -0
- package/backend/public/app/images/logo.jpg +0 -0
- package/backend/public/app/index.html +30 -0
- package/backend/public/app/others/haltest_vid_1.mp4 +0 -0
- package/backend/public/web/assets/index-CJTv6LUz.js +85 -0
- package/backend/public/web/assets/index-DKqDNyM_.css +1 -0
- package/backend/public/web/images/haltest_logo.ico +0 -0
- package/backend/public/web/images/haltest_logo.jpeg +0 -0
- package/backend/public/web/index.html +17 -0
- package/backend/public/web/video/base1.gif +0 -0
- package/backend/routes/ai.routes.js +290 -0
- package/backend/routes/api.router.js +594 -0
- package/backend/routes/export.router.js +53 -0
- package/backend/routes/history.router.js +105 -0
- package/backend/routes/import.router.js +367 -0
- package/backend/routes/index.js +0 -0
- package/backend/routes/keys.routes.js +30 -0
- package/backend/routes/mock.router.js +94 -0
- package/backend/routes/project.router.js +656 -0
- package/backend/routes/run.router.js +20 -0
- package/backend/routes/swaggerDefinitions.js +1099 -0
- package/backend/schemas/back_forward/body.js +20 -0
- package/backend/schemas/block_resource/body.js +26 -0
- package/backend/schemas/branch/body.js +17 -0
- package/backend/schemas/call_llm/body.js +18 -0
- package/backend/schemas/cleanup_state/body.js +48 -0
- package/backend/schemas/clear_all_mocks/body.js +10 -0
- package/backend/schemas/cli_params/body.js +52 -0
- package/backend/schemas/click/body.js +66 -0
- package/backend/schemas/close_browser/body.js +33 -0
- package/backend/schemas/close_context/body.js +12 -0
- package/backend/schemas/conditional/body.js +62 -0
- package/backend/schemas/configure_route/body.js +15 -0
- package/backend/schemas/control_exceptions/body.js +72 -0
- package/backend/schemas/create_context/body.js +45 -0
- package/backend/schemas/drag_drop/body.js +36 -0
- package/backend/schemas/execute_js/body.js +45 -0
- package/backend/schemas/find_element/body.js +40 -0
- package/backend/schemas/flow_control/body.js +17 -0
- package/backend/schemas/generate_data/body.js +31 -0
- package/backend/schemas/get_set_content/body.js +76 -0
- package/backend/schemas/handle_downloads/body.js +57 -0
- package/backend/schemas/handle_hooks/body.js +47 -0
- package/backend/schemas/hover/body.js +25 -0
- package/backend/schemas/index.js +90 -0
- package/backend/schemas/inject_tokens/body.js +28 -0
- package/backend/schemas/integrate_ci/body.js +56 -0
- package/backend/schemas/interaction/body.js +7 -0
- package/backend/schemas/intercept_request/body.js +56 -0
- package/backend/schemas/launch_browser/body.js +97 -0
- package/backend/schemas/listen_events/body.js +77 -0
- package/backend/schemas/log_errors/body.js +42 -0
- package/backend/schemas/loop/body.js +43 -0
- package/backend/schemas/manage_cookies/body.js +54 -0
- package/backend/schemas/manage_session/body.js +66 -0
- package/backend/schemas/manage_storage/body.js +70 -0
- package/backend/schemas/manage_tabs/body.js +56 -0
- package/backend/schemas/mock_response/body.js +17 -0
- package/backend/schemas/modify_headers/body.js +15 -0
- package/backend/schemas/open_url/body.js +56 -0
- package/backend/schemas/pause/body.js +10 -0
- package/backend/schemas/persist_session/body.js +33 -0
- package/backend/schemas/read_data/body.js +51 -0
- package/backend/schemas/resize_viewport/body.js +66 -0
- package/backend/schemas/return_code/body.js +40 -0
- package/backend/schemas/run_tests/body.js +51 -0
- package/backend/schemas/save_dom/body.js +43 -0
- package/backend/schemas/save_results/body.js +50 -0
- package/backend/schemas/scroll/body.js +52 -0
- package/backend/schemas/select_option/body.js +44 -0
- package/backend/schemas/set_network_conditions/body.js +30 -0
- package/backend/schemas/submit_form/body.js +30 -0
- package/backend/schemas/switch/body.js +15 -0
- package/backend/schemas/take_screenshot/body.js +51 -0
- package/backend/schemas/testSchemas.js +179 -0
- package/backend/schemas/transform/body.js +25 -0
- package/backend/schemas/type_text/body.js +40 -0
- package/backend/schemas/upload_file/body.js +28 -0
- package/backend/schemas/validate_semantic/body.js +12 -0
- package/backend/schemas/variable/body.js +68 -0
- package/backend/schemas/wait_conditional/body.js +34 -0
- package/backend/schemas/wait_fixed/body.js +19 -0
- package/backend/schemas/wait_for_element/body.js +39 -0
- package/backend/schemas/wait_for_request/body.js +14 -0
- package/backend/schemas/wait_for_response/body.js +15 -0
- package/backend/schemas/wait_navigation/body.js +41 -0
- package/backend/schemas/wait_network/body.js +22 -0
- package/backend/schemas/wait_network_match/body.js +11 -0
- package/backend/schemas/wait_visible/body.js +28 -0
- package/backend/services/AIService.js +484 -0
- package/backend/services/DependencyService.js +91 -0
- package/backend/services/ExecutionLogger.js +89 -0
- package/backend/services/ExecutionService.js +230 -0
- package/backend/services/KeyVaultService.js +155 -0
- package/backend/services/LLMFactory.js +132 -0
- package/backend/services/NetworkHistoryService.js +85 -0
- package/backend/services/OllamaService.js +78 -0
- package/backend/services/PlaywrightMCPServer.js +339 -0
- package/backend/services/RetentionService.js +84 -0
- package/backend/services/SelectorHealer.js +102 -0
- package/backend/services/StorageCleanupService.js +185 -0
- package/backend/services/TerminalService.js +242 -0
- package/backend/services/VariableManager.js +248 -0
- package/backend/services/browser.service.js +248 -0
- package/backend/services/exporter/generators/playwright.generator.js +168 -0
- package/backend/services/exporter/index.js +52 -0
- package/backend/services/importer/core/AbstractMapper.js +20 -0
- package/backend/services/importer/core/AbstractParser.js +20 -0
- package/backend/services/importer/cypress/CypressMapper.js +105 -0
- package/backend/services/importer/cypress/CypressParser.js +42 -0
- package/backend/services/importer/detectors/FrameworkDetector.js +132 -0
- package/backend/services/importer/index.js +244 -0
- package/backend/services/importer/katalon/KatalonMapper.js +101 -0
- package/backend/services/importer/katalon/KatalonParser.js +144 -0
- package/backend/services/importer/nightwatch/NightwatchMapper.js +103 -0
- package/backend/services/importer/nightwatch/NightwatchParser.js +84 -0
- package/backend/services/importer/playwright/PlaywrightMapper.js +95 -0
- package/backend/services/importer/playwright/PlaywrightParser.js +44 -0
- package/backend/services/importer/project/ProjectIndexer.js +157 -0
- package/backend/services/importer/project/ProjectScanner.js +82 -0
- package/backend/services/importer/project/ReferenceResolver.js +108 -0
- package/backend/services/importer/puppeteer/PuppeteerMapper.js +109 -0
- package/backend/services/importer/puppeteer/PuppeteerParser.js +119 -0
- package/backend/services/importer/selenium/SeleniumMapper.js +117 -0
- package/backend/services/importer/selenium/SeleniumParser.js +112 -0
- package/backend/services/importer/selenium/csharp/CSharpSeleniumMapper.js +146 -0
- package/backend/services/importer/selenium/csharp/CSharpSeleniumParser.js +249 -0
- package/backend/services/importer/selenium/java/JavaSeleniumMapper.js +120 -0
- package/backend/services/importer/selenium/java/JavaSeleniumParser.js +174 -0
- package/backend/services/importer/selenium/python/PythonSeleniumMapper.js +166 -0
- package/backend/services/importer/selenium/python/PythonSeleniumParser.js +268 -0
- package/backend/services/importer/testcafe/TestCafeMapper.js +120 -0
- package/backend/services/importer/testcafe/TestCafeParser.js +71 -0
- package/backend/services/importer/testrigor/TestRigorMapper.js +77 -0
- package/backend/services/importer/testrigor/TestRigorParser.js +88 -0
- package/backend/services/importer/webdriverio/WebdriverIOMapper.js +88 -0
- package/backend/services/importer/webdriverio/WebdriverIOParser.js +56 -0
- package/backend/services/inspector.service.js +279 -0
- package/backend/services/mcp.service.js +172 -0
- package/backend/services/stateManager.js +61 -0
- package/backend/services/supabaseClient.js +20 -0
- package/backend/services/trace.service.js +49 -0
- package/backend/socket.js +132 -0
- package/backend/swagger/schemaConverter.js +39 -0
- package/backend/swagger/swaggerConfig.js +261 -0
- package/backend/templates/confirm-signup.html +285 -0
- package/backend/test-results/.last-run.json +4 -0
- package/backend/utils/constants.js +108 -0
- package/backend/verify_args.sh +11 -0
- package/backend/verify_file_operations.js +127 -0
- package/backend/verify_firefox.sh +11 -0
- package/backend/verify_fullscreen.sh +11 -0
- package/backend/verify_launch.sh +20 -0
- package/backend/verify_listen_events.js +152 -0
- package/backend/verify_network_consolidation.js +105 -0
- package/backend/verify_network_nodes.js +243 -0
- package/backend/verify_save_dom_node.js +194 -0
- package/backend/verify_screenshot_node.js +211 -0
- package/backend/verify_session_update.js +102 -0
- package/backend/verify_wait_navigation.js +86 -0
- package/bin/haltest.js +98 -28
- package/package.json +38 -7
package/README.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="apps/web/public/images/haltest_logo.jpeg" alt="HAL-TEST Logo" width="200" style="border-radius: 20px; margin-bottom: 20px;">
|
|
3
|
+
|
|
4
|
+
# HAL-TEST 🤖
|
|
5
|
+
### The Missing Link in Browser Automation
|
|
6
|
+
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://playwright.dev/)
|
|
9
|
+
[](https://reactflow.dev/)
|
|
10
|
+
[](https://join.slack.com/t/haltest-talk/shared_invite/zt-3o7wqlt53-tzFebjhK5TxQtYZbwK~f~g)
|
|
11
|
+
|
|
12
|
+
**HAL-TEST** is a modern, visual automation framework that bridges the gap between manual QA and technical automation. Built on top of **Playwright**, it provides a high-performance, node-based interface to build, manage, and scale complex browser workflows without writing a single line of boilerplate code.
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 📺 See it in Action
|
|
18
|
+
|
|
19
|
+
<div align="center">
|
|
20
|
+
<img src="apps/web/public/video/base1.gif" width="100%" alt="HAL-TEST Demo">
|
|
21
|
+
<p><em>Visual node-based logic with real-time execution feedback.</em></p>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
## 🚀 Why HAL-TEST?
|
|
25
|
+
|
|
26
|
+
Most automation frameworks suffer from **"Framework Fatigue"**: complex YAMLs, brittle selectors, and high barriers to entry. HAL-TEST changes the game:
|
|
27
|
+
|
|
28
|
+
* **Low Code, Pro Power**: Use the full strength of Playwright through a visual canvas.
|
|
29
|
+
* **Zero Vendor Lock-in**: Export your flows or run them via the **HAL-TEST CLI**.
|
|
30
|
+
* **Self-Healing Ready**: Designed to handle dynamic modern web apps with intelligent node logic.
|
|
31
|
+
* **Built for Teams**: Allow manual QAs to build tests that Seniors can audit and scale.
|
|
32
|
+
|
|
33
|
+
## ✨ Key Features
|
|
34
|
+
|
|
35
|
+
### 🧠 Visual Flow Editor
|
|
36
|
+
* **Node-Based Logic**: 50+ specialized nodes for DOM manipulation, network interception, and AI.
|
|
37
|
+
* **Smart Connections**: Animated execution feedback—watch your test run in real-time.
|
|
38
|
+
* **Category-Specific UI**: Glassmorphic design with 50+ unique icons for instant recognition.
|
|
39
|
+
|
|
40
|
+
### 🛠️ Developer-First DX
|
|
41
|
+
* **Powerful CLI**: Integrated terminal tool for CI/CD pipelines (GitHub Actions, Jenkins).
|
|
42
|
+
* **Network Orchestration**: Mock, intercept, and modify XHR/Fetch requests visually.
|
|
43
|
+
* **Session Management**: Persist cookies, local storage, and auth tokens between runs.
|
|
44
|
+
* **LLM Integration**: Semantic validation and AI-powered node generation.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 🏗️ Architecture & Tech Stack
|
|
49
|
+
|
|
50
|
+
- **Frontend**: React 18, React Flow, Motion 12, TanStack Query.
|
|
51
|
+
- **Backend**: Node.js, Express, Playwright.
|
|
52
|
+
- **Database**: SQLite (local persistence) + IndexedDB (client-side screenshots).
|
|
53
|
+
- **Monorepo**: Turbo + pnpm workspaces.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## ⚡ Quick Start (Development)
|
|
58
|
+
|
|
59
|
+
### Prerequisites
|
|
60
|
+
- **Node.js** 18+ and **pnpm**
|
|
61
|
+
|
|
62
|
+
### 1. Setup
|
|
63
|
+
```bash
|
|
64
|
+
git clone [https://github.com/andresguc1/hal-test.git](https://github.com/andresguc1/hal-test.git)
|
|
65
|
+
cd hal-test
|
|
66
|
+
pnpm install
|
|
67
|
+
2. Configure Guest Mode
|
|
68
|
+
For quick local testing without Supabase:
|
|
69
|
+
|
|
70
|
+
Bash
|
|
71
|
+
# Set in your .env
|
|
72
|
+
AUTH_ENABLED=false
|
|
73
|
+
VITE_AUTH_ENABLED=false
|
|
74
|
+
3. Run
|
|
75
|
+
Bash
|
|
76
|
+
pnpm --filter backend db:init
|
|
77
|
+
pnpm run dev
|
|
78
|
+
App: http://localhost:5173/app/
|
|
79
|
+
|
|
80
|
+
Server: http://localhost:2001
|
|
81
|
+
|
|
82
|
+
💻 Terminal CLI
|
|
83
|
+
Automate the automation. Install the HAL-TEST CLI to run flows in headless mode:
|
|
84
|
+
|
|
85
|
+
Bash
|
|
86
|
+
cd apps/cli && npm install -g .
|
|
87
|
+
|
|
88
|
+
# Run a flow by ID
|
|
89
|
+
haltest run <flow_id> --headed
|
|
90
|
+
🐳 Docker Deployment (Recommended)
|
|
91
|
+
To avoid missing system dependencies for Playwright, use Docker:
|
|
92
|
+
|
|
93
|
+
Bash
|
|
94
|
+
docker compose up -d --build
|
|
95
|
+
See `DOCKER.md` for detailed production setup.
|
|
96
|
+
|
|
97
|
+
## ⚡ Developer Workflow
|
|
98
|
+
|
|
99
|
+
To make contributing easier, we provide unified commands in the root `package.json`:
|
|
100
|
+
|
|
101
|
+
### Update your Local Repo
|
|
102
|
+
Pull the latest changes from GitHub, install all dependencies, and rebuild the frontend monolith in one step:
|
|
103
|
+
```bash
|
|
104
|
+
pnpm run update:app
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Publish a New CLI Release
|
|
108
|
+
*(Maintainers only)*. This command bumps the patch version, runs the standalone build for the CLI, and publishes it to NPM:
|
|
109
|
+
```bash
|
|
110
|
+
pnpm run release
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 🤝 Community & Support
|
|
116
|
+
Join our Slack: [HAL-TEST Talk](https://join.slack.com/t/haltest-talk/shared_invite/zt-3o7wqlt53-tzFebjhK5TxQtYZbwK~f~g)
|
|
117
|
+
|
|
118
|
+
**Star the Repo**: If this project helps you, give us a ⭐!
|
|
119
|
+
|
|
120
|
+
## 📄 License
|
|
121
|
+
MIT License - Created by Andresguc1
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
[ "$HUSKY" = "2" ] && set -x
|
|
3
|
+
n=$(basename "$0")
|
|
4
|
+
s=$(dirname "$(dirname "$0")")/$n
|
|
5
|
+
|
|
6
|
+
[ ! -f "$s" ] && exit 0
|
|
7
|
+
|
|
8
|
+
if [ -f "$HOME/.huskyrc" ]; then
|
|
9
|
+
echo "husky - '~/.huskyrc' is DEPRECATED, please move your code to ~/.config/husky/init.sh"
|
|
10
|
+
fi
|
|
11
|
+
i="${XDG_CONFIG_HOME:-$HOME/.config}/husky/init.sh"
|
|
12
|
+
[ -f "$i" ] && . "$i"
|
|
13
|
+
|
|
14
|
+
[ "${HUSKY-}" = "0" ] && exit 0
|
|
15
|
+
|
|
16
|
+
export PATH="node_modules/.bin:$PATH"
|
|
17
|
+
sh -e "$s" "$@"
|
|
18
|
+
c=$?
|
|
19
|
+
|
|
20
|
+
[ $c != 0 ] && echo "husky - $n script failed (code $c)"
|
|
21
|
+
[ $c = 127 ] && echo "husky - command not found in PATH=$PATH"
|
|
22
|
+
exit $c
|