- name
- wix-cli-app-validation
- description
- Use when testing app readiness, verifying runtime behavior, checking UI rendering, or validating before releases. Triggers include validate, test, e2e, verify, check readiness, runtime errors, UI testing, preview validation, build verification, smoke test, TypeScript compilation.
- compatibility
- Requires Wix CLI development environment.
Wix App Validation
Validates Wix CLI applications through a five-step sequential workflow: TypeScript compilation check, package installation, build, preview, and e2e testing.
Non-Matching Intents
Do NOT use this skill for:
- Creating new extensions → Use
wix-cli-dashboard-page,wix-cli-embedded-script, etc. - Deploying to production → This is for validation/testing only
- Unit testing → This skill performs e2e/integration testing
Validation Workflow
Execute these steps sequentially. Stop and report errors if any step fails.
Step 1: TypeScript Compilation Check
Run TypeScript compiler to check for type errors before proceeding with any other steps:
npx tsc --noEmitSuccess criteria:
- Exit code 0
- No TypeScript compilation errors
- All type checks pass
On failure: Report the specific TypeScript errors and stop validation. Common issues:
- Type mismatches between expected and actual types
- Missing type declarations for imported modules
- Incorrect generic type parameters
- Properties not existing on declared types
- Incompatible function signatures
Example error output:
src/dashboard/pages/offers/page.tsx:45:23 - error TS2339: Property 'id' does not exist on type 'undefined'.
src/components/OfferForm.tsx:12:5 - error TS2322: Type 'string' is not assignable to type 'number'.Step 2: Package Installation
Ensure all dependencies are installed before proceeding with the build.
Detect package manager:
- Check for
package-lock.json→ usenpm - Check for
yarn.lock→ useyarn - Check for
pnpm-lock.yaml→ usepnpm - Default to
npmif no lock file is found
Run installation command:
# For npm
npm install
# For yarn
yarn install
# For pnpm
pnpm installSuccess criteria:
- Exit code 0
- All dependencies installed successfully
- No missing peer dependencies warnings (unless expected)
node_modulesdirectory exists and contains expected packages
On failure: Report the installation errors and stop validation. Common issues:
- Network connectivity problems
- Corrupted lock files
- Version conflicts
- Missing Node.js or package manager
Step 3: Build Validation
Run the build command and check for compilation errors:
npx wix buildSuccess criteria:
- Exit code 0
- No TypeScript errors
- No missing dependencies
On failure: Report the specific compilation errors and stop validation.
Step 4: Preview Deployment
Start the preview server:
npx wix previewSuccess criteria:
- Preview server starts successfully
- Preview URLs are generated (both site and dashboard)
URL extraction: Parse the terminal output to find both preview URLs. Look for patterns like:
- Site preview:
Site preview: https://...orSite URL: https://... - Dashboard preview:
Dashboard preview: https://...orPreview URL: https://...orYour app is available at: https://...
Extract both URLs as they will be used in Step 5 for testing.
On failure: Report the preview startup errors and stop validation.
Step 5: E2E Testing with Playwright MCP
Once the preview URL is available, use Playwright MCP tools to validate the application.
See Playwright MCP Reference for complete tool documentation.
Pre-Flight Checklist
Before starting Playwright testing, create a test plan for each dashboard page extension:
For each dashboard page extension, identify:
- Primary user action: What's the main button/action? (e.g., "Create Offer", "New Item", "Save")
- Secondary actions: What other interactive elements exist? (filters, tabs, edit buttons)
- Empty states: What buttons appear when no data exists?
- Form fields: What inputs need testing?
Create a mental testing checklist for each page:
- [ ] Page loads without app-specific errors
- [ ] Primary action button exists and is clickable
- [ ] Console remains clean after button click
- [ ] No backend 5xx errors from YOUR app's APIs
- [ ] UI responds correctly to interaction
5.1 Test Site Preview and All Extensions
Test both the site preview and all dashboard page extensions. Parse the preview output to identify:
- Site preview URL: The main site URL (typically shown as "Site preview" or similar)
- Dashboard preview URL: The base URL for dashboard pages
A. Test Site Preview
- Navigate to the site preview URL:
Tool: playwright__browser-navigate
Args: { "url": "<site-preview-url>" }- Wait for the page to load completely before proceeding to validation steps (4.2-4.7).
- Run validation steps 5.2-5.7 to validate the site preview.
B. Test All Dashboard Page Extensions
Discover all dashboard page extensions from src/extensions.ts and test each one. For each extension:
- Navigate to the extension URL:
- Base dashboard preview URL: <dashboard-preview-url> - Extension routePath: from routePath property in each extension definition - Full URL: <dashboard-preview-url>/<routePath> - Example: If dashboard preview URL is https://preview.wix.com/... and routePath is "offers", navigate to https://preview.wix.com/.../offers
Tool: playwright__browser-navigate
Args: { "url": "<dashboard-preview-url>/<routePath>" }- Wait for the page to load completely before proceeding to validation steps (5.2-5.7).
- Run validation steps 5.2-5.7 for each extension to ensure all dashboard pages are validated.
Common dashboard page extensions to test:
- Root page (routePath:
""or"/") - Dashboard pages with any routePath value
- Nested routes with multiple path segments
Note: Only test dashboard page extensions (extensions.dashboardPage). Skip data extensions and embedded scripts for this validation step.
5.2 Check for Runtime Errors
Check console errors at THREE critical moments:
- On initial page load (wait 3-5 seconds for page to settle)
- After EACH button click or interaction
- After any navigation or tab change
Tool: playwright__browser-console-messages
Args: { "level": "error" }Distinguish between error types:
✗ CRITICAL - App Errors (FAIL validation):
- Errors with stack traces pointing to YOUR source code
- Paths include:
/src/,/dashboard/,/extensions/, your component files - Example:
TypeError at /src/dashboard/pages/offers/page.tsx:45 - Example:
ReferenceError: variable is not defined at components/OfferForm.tsx
✓ OK - Third-party Warnings:
- Google Maps async loading warnings
- react-i18next warnings
- Sentry initialization logs
Action on errors:
- If CRITICAL app errors found → Mark page validation as FAILED
- Document all errors in the validation report with full messages
5.3 Validate Backend API Calls
Check that all backend API calls are successful and not returning error status codes.
Tool: playwright__browser-network-requests
Args: {}Validate API responses:
- Check all network requests for status codes
- Critical failures: Any 500 (Internal Server Error) responses from backend APIs
- Warning: 4xx responses (client errors) - note but may be expected in some cases
- Success: 200-299 status codes are acceptable
- Filter requests to only check API endpoints (typically
/api/or backend service URLs)
Check for:
- No 500 errors from backend APIs
- No 502 (Bad Gateway) or 503 (Service Unavailable) errors
- Failed requests to Wix backend services
- Timeout errors on API calls
On failure: Report:
- Which API endpoint(s) failed
- HTTP status code(s) received
- Request URL and method
- Response body if available (may contain error details)
Note: This validation should be performed after the page has fully loaded and all API calls have completed. Wait for network activity to settle before checking.
5.4 Interactive Testing
CRITICAL: Pages may load successfully but fail when users interact with them. You MUST test primary actions on every page.
⚠️ VALIDATION REQUIREMENT: Do NOT mark any page as validated until you have clicked at least one primary action button and verified no app errors occurred.
For EACH dashboard page, perform these steps:
Step 1: Identify Interactive Elements
Capture an accessibility snapshot to identify buttons and interactive elements:
Tool: playwright__browser-snapshot
Args: {}Step 2: Test Primary Action Button
You MUST click at least one primary action button on each page:
Tool: playwright__browser-click
Args: { "element": "Primary action button name", "ref": "element-ref-from-snapshot" }Step 3: Check Console Errors After EACH Click
Immediately after clicking, check for errors:
Tool: playwright__browser-wait-for
Args: { "time": 2 } # Wait for action to complete
Tool: playwright__browser-console-messages
Args: { "level": "error" }Analyze the errors:
- ✗ App errors (from YOUR code) → FAIL the page validation
- ⚠️ Platform errors → Note but continue
- ✓ No errors → PASS
Step 4: Test Additional Interactions
Form inputs:
Tool: playwright__browser-type
Args: { "element": "Input field", "ref": "input-ref", "text": "test value" }Navigation flows:
- Click list items to navigate to detail views
- Click tabs to switch between sections
- Test back navigation
Step 5: Document Results
For each interaction tested, document:
- ✓ Button: "[Button Name]" - Clicked successfully, no errors
- ✗ Button: "[Button Name]" - ERROR: [full error message with stack trace]
- ⚠️ Button: "[Button Name]" - Warning: [platform error message]
Success criteria:
- At least ONE primary action button clicked per page
- Console checked for errors after EACH click
- No app-specific errors found (platform errors are OK)
- Results documented for validation report
Failure criteria:
- Primary action button not tested
- App errors found after button click
- Errors not checked after interaction
On failure: Report:
- Page name and route
- Button that was clicked
- Full error message from console
- Stack trace showing source file
- Mark validation as FAILED for that page
5.5 Capture Accessibility Snapshot
Tool: playwright__browser-snapshot
Args: {}Validate:
- Expected UI elements are present
- Page structure is correct
- No broken or missing components
5.6 Take Screenshot (Optional)
Tool: playwright__browser-take-screenshot
Args: { "fullPage": true }Capture visual evidence of the rendered page state.
5.7 Execute Custom Validations (If Needed)
Tool: playwright__browser-evaluate
Args: { "function": "() => { /* validation code */ }" }Use for custom runtime checks like:
- Verifying specific DOM elements exist
- Checking application state
- Validating data loading
Validation Report
After completing all steps, provide a summary:
Pass:
- TypeScript: ✓ No compilation errors
- Dependencies: ✓ All packages installed successfully
- Build: ✓ Compiled successfully
- Preview: ✓ Running at [URL]
- E2E: ✓ All previews tested successfully
- Site Preview: ✓ No runtime errors, UI renders correctly, all API calls successful, interactions work correctly - Dashboard Extensions: - [Extension 1]: ✓ No runtime errors, UI renders correctly, all API calls successful, interactions work correctly - [Extension 2]: ✓ No runtime errors, UI renders correctly, all API calls successful, interactions work correctly - [Extension N]: ✓ No runtime errors, UI renders correctly, all API calls successful, interactions work correctly
Fail:
- Identify which step failed
- Identify which preview/extension(s) failed (if applicable)
- Provide specific error messages
- Suggest remediation steps
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| TypeScript compilation fails | Type mismatches, missing declarations, or incorrect types | Fix TypeScript errors shown in npx tsc --noEmit output |
| Package installation fails | Missing lock file, network issues, or corrupted node_modules | Delete node_modules and lock file, then reinstall |
| Build fails with TS errors | Type mismatches | Fix TypeScript errors in source |
| Preview fails to start | Port conflict or config issue | Check wix.config.json |
| Console errors in preview | Runtime exceptions | Check browser console output |
| Backend API 500 errors | Server-side errors in API routes | Check API route handlers, server logs, and error handling |
| UI not rendering | Component errors | Review component code and imports |
| Button click fails | Missing onClick handler, disabled state, or element not found | Verify button has proper event handlers and is interactive |
| Form submission errors | Validation failures, missing required fields, or API errors | Check form validation logic and API endpoint handling |
| Navigation not working | Broken links, missing routes, or state management issues | Verify route configuration and navigation handlers |