···111111<option
112112 value="testable-apps/your-app/index.html"
113113 data-task="Describe the task for the user"
114114- data-win="selector:#success-element">
114114+ data-win="postMessage">
115115 Your App Name
116116</option>
117117```
118118119119-The `data-win` attribute defines when the test ends automatically. Supported formats:
119119+UXET now uses one standardized win condition: `postMessage`. When the task is complete, the app inside the iframe should send:
120120+121121+```js
122122+window.parent.postMessage({ type: 'UXET_TASK_COMPLETE' }, '*');
123123+```
120124121121-- `selector:.some-class` — fires when the CSS selector matches a visible element.
122122-- `text:Some text` — fires when the specified text appears in the page.
125125+This keeps UXET app integration task-specific inside the app while giving UXET only one completion signal to listen for.
+3-3
index.html
···9595 <select id="app-select">
9696 <option value="">Select an app...</option>
9797 <option value="testable-apps/shop-app/index.html" data-task="Find and purchase a blue t-shirt"
9898- data-win="selector:.checkout-success.active">THREAD Store</option>
9898+ data-win="postMessage">THREAD Store</option>
9999 <option value="testable-apps/example-app/index.html"
100100 data-task="Fill out the feedback form with your details"
101101- data-win="text:Form submitted successfully">Feedback Terminal</option>
101101+ data-win="postMessage">Feedback Terminal</option>
102102 <option value="testable-apps/long-page-app/index.html"
103103 data-task="Review the comparison sections and subscribe at the bottom of the page"
104104- data-win="selector:#success-banner">Signal Intelligence Report</option>
104104+ data-win="postMessage">Signal Intelligence Report</option>
105105 </select>
106106 </label>
107107