@@ -27299,6 +27299,23 @@ var CodeceptApp = (() => {
2729927299 /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h1', { children: 'Information' }),
2730027300 /* @__PURE__ */ (0, import_jsx_runtime.jsx)('div', { className: 'notice', 'qa-id': 'test' }),
2730127301 /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/', id: 'link', 'qa-id': 'test', 'qa-link': 'test', children: 'Back to index' }) }),
27302+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27303+ id: 'grab-multiple',
27304+ children: [
27305+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/', id: 'first-link', children: 'First' }),
27306+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/info', id: 'second-link', children: 'Second' }),
27307+ ],
27308+ }),
27309+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('form', {
27310+ action: '/info',
27311+ method: 'POST',
27312+ children: [
27313+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('p', {
27314+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)('label', { children: 'Rus:' }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'text', name: 'rus' })],
27315+ }),
27316+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'submit', value: 'Submit' }) }),
27317+ ],
27318+ }),
2730227319 Object.keys(postData).length > 0 &&
2730327320 /* @__PURE__ */ (0, import_jsx_runtime.jsx)('pre', {
2730427321 style: { whiteSpace: 'pre-wrap' },
@@ -27677,6 +27694,13 @@ var CodeceptApp = (() => {
2767727694 /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'submit', value: 'Submit' }) }),
2767827695 ],
2767927696 }),
27697+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27698+ id: 'grab-multiple',
27699+ children: [
27700+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/', id: 'first-link', children: 'First' }),
27701+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/info', id: 'second-link', children: 'Second' }),
27702+ ],
27703+ }),
2768027704 ],
2768127705 })
2768227706 }
@@ -27757,12 +27781,225 @@ var CodeceptApp = (() => {
2775727781 ],
2775827782 })
2775927783 }
27784+ function CustomLocatorStrategiesPage() {
27785+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27786+ role: 'main',
27787+ children: [
27788+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('nav', {
27789+ role: 'navigation',
27790+ 'data-qa': 'nav-section',
27791+ children: [
27792+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/', 'aria-label': 'Home link', children: 'Home' }),
27793+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/about', 'aria-label': 'About link', children: 'About' }),
27794+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/contact', 'aria-label': 'Contact link', children: 'Contact' }),
27795+ ],
27796+ }),
27797+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h1', { 'data-testid': 'page-title', 'aria-label': 'Welcome Message', children: 'Custom Locator Test Page' }),
27798+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('div', {
27799+ role: 'complementary',
27800+ 'data-qa': 'info-section',
27801+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { 'data-testid': 'info-text', 'aria-label': 'Information message', children: 'This is a test page for custom locators.' }),
27802+ }),
27803+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('form', {
27804+ role: 'form',
27805+ 'data-qa': 'test-form',
27806+ action: '/form/complex',
27807+ method: 'POST',
27808+ children: [
27809+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27810+ 'data-qa': 'form-section',
27811+ children: [
27812+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('label', { htmlFor: 'username', children: 'Username:' }),
27813+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', {
27814+ type: 'text',
27815+ id: 'username',
27816+ name: 'username',
27817+ 'data-testid': 'username-input',
27818+ 'aria-label': 'Username field',
27819+ placeholder: 'Enter your username',
27820+ }),
27821+ ],
27822+ }),
27823+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27824+ 'data-qa': 'form-section',
27825+ children: [
27826+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('label', { htmlFor: 'password', children: 'Password:' }),
27827+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', {
27828+ type: 'password',
27829+ id: 'password',
27830+ name: 'password',
27831+ 'data-testid': 'password-input',
27832+ 'aria-label': 'Password field',
27833+ placeholder: 'Enter your password',
27834+ }),
27835+ ],
27836+ }),
27837+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27838+ children: [
27839+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('button', {
27840+ type: 'submit',
27841+ role: 'button',
27842+ 'data-testid': 'submit-button',
27843+ 'data-qa': 'submit-btn',
27844+ 'aria-label': 'Submit form',
27845+ children: 'Submit',
27846+ }),
27847+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('button', {
27848+ type: 'button',
27849+ 'data-testid': 'cancel-button',
27850+ 'data-qa': 'cancel-btn',
27851+ 'aria-label': 'Cancel form',
27852+ children: 'Cancel',
27853+ }),
27854+ ],
27855+ }),
27856+ ],
27857+ }),
27858+ ],
27859+ })
27860+ }
27861+ function LoginPage() {
27862+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27863+ children: [
27864+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h1', { children: 'Login' }),
27865+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('form', {
27866+ action: '/login',
27867+ method: 'POST',
27868+ children: [
27869+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('p', {
27870+ children: [
27871+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('label', { htmlFor: 'email', children: 'Email:' }),
27872+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('br', {}),
27873+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'email', id: 'email', name: 'email', placeholder: 'Enter your email' }),
27874+ ],
27875+ }),
27876+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('p', {
27877+ children: [
27878+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('label', { htmlFor: 'password', children: 'Password:' }),
27879+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('br', {}),
27880+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'password', id: 'password', name: 'password', placeholder: 'Enter your password' }),
27881+ ],
27882+ }),
27883+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'submit', value: 'Login' }) }),
27884+ ],
27885+ }),
27886+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/', children: 'Back to index' }) }),
27887+ ],
27888+ })
27889+ }
27890+ function FormBug1467Page() {
27891+ const location = useLocation()
27892+ const sessionTag = location.hash ? location.hash.substring(1) : 'default'
27893+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27894+ children: [
27895+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('h1', { children: ['Bug 1467 Form (', sessionTag, ')'] }),
27896+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: 'TEST TEST' }),
27897+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('form', {
27898+ name: 'form1',
27899+ action: '/form/bug1467',
27900+ method: 'POST',
27901+ children: [
27902+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h3', { children: 'Form 1' }),
27903+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', {
27904+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('label', { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'checkbox', name: 'first_test_radio', value: 'Yes' }), ' Yes'] }),
27905+ }),
27906+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', {
27907+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('label', { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'checkbox', name: 'first_test_radio', value: 'No' }), ' No'] }),
27908+ }),
27909+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'submit', value: 'Submit' }) }),
27910+ ],
27911+ }),
27912+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('form', {
27913+ name: 'form2',
27914+ action: '/form/bug1467',
27915+ method: 'POST',
27916+ children: [
27917+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h3', { children: 'Form 2' }),
27918+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', {
27919+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('label', { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'checkbox', name: 'first_test_radio', value: 'Yes' }), ' Yes'] }),
27920+ }),
27921+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', {
27922+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('label', { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'checkbox', name: 'first_test_radio', value: 'No' }), ' No'] }),
27923+ }),
27924+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'submit', value: 'Submit' }) }),
27925+ ],
27926+ }),
27927+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/', children: 'Back to index' }) }),
27928+ ],
27929+ })
27930+ }
27931+ function IframePage() {
27932+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27933+ children: [
27934+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h1', { children: 'Iframe Test Page' }),
27935+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('iframe', { name: 'content', src: '/iframe_content', width: '400', height: '300', title: 'Test iframe' }),
27936+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/', children: 'Back to index' }) }),
27937+ ],
27938+ })
27939+ }
27940+ function IframeNestedPage() {
27941+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('div', {
27942+ children: [
27943+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h1', { children: 'Nested Iframe Test Page' }),
27944+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('iframe', {
27945+ name: 'wrapper',
27946+ id: 'wrapperId',
27947+ className: 'wrapperClass',
27948+ src: '/iframe_wrapper',
27949+ width: '500',
27950+ height: '400',
27951+ title: 'Wrapper iframe',
27952+ }),
27953+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('a', { href: '/', children: 'Back to index' }) }),
27954+ ],
27955+ })
27956+ }
27957+ function IframeContentPage() {
27958+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('html', {
27959+ children: [
27960+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('head', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('title', { children: 'Iframe Content' }) }),
27961+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('body', {
27962+ children: [
27963+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h1', { children: 'Inside Iframe' }),
27964+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('form', {
27965+ action: '/iframe_content',
27966+ method: 'POST',
27967+ children: [
27968+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('p', {
27969+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)('label', { children: 'Rus:' }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'text', name: 'rus' })],
27970+ }),
27971+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('p', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('input', { type: 'submit', value: 'Sign in!' }) }),
27972+ ],
27973+ }),
27974+ ],
27975+ }),
27976+ ],
27977+ })
27978+ }
27979+ function IframeWrapperPage() {
27980+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('html', {
27981+ children: [
27982+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('head', { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)('title', { children: 'Iframe Wrapper' }) }),
27983+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)('body', {
27984+ children: [
27985+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('h1', { children: 'Wrapper Iframe' }),
27986+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)('iframe', { name: 'content', src: '/iframe_content', width: '300', height: '200', title: 'Inner iframe' }),
27987+ ],
27988+ }),
27989+ ],
27990+ })
27991+ }
2776027992 function App() {
2776127993 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BrowserRouter, {
2776227994 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Routes, {
2776327995 children: [
2776427996 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IndexPage, {}) }),
2776527997 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/info', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoPage, {}) }),
27998+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/login', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoginPage, {}) }),
27999+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/iframe', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IframePage, {}) }),
28000+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/iframe_nested', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IframeNestedPage, {}) }),
28001+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/iframe_content', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IframeContentPage, {}) }),
28002+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/iframe_wrapper', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IframeWrapperPage, {}) }),
2776628003 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/file', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormFilePage, {}) }),
2776728004 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/hidden', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormHiddenPage, {}) }),
2776828005 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/select', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormSelectPage, {}) }),
@@ -27774,6 +28011,8 @@ var CodeceptApp = (() => {
2777428011 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/example1', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormExample1Page, {}) }),
2777528012 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/example7', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormExample7Page, {}) }),
2777628013 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/wait_element', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormWaitElementPage, {}) }),
28014+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/custom_locator_strategies', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CustomLocatorStrategiesPage, {}) }),
28015+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/bug1467', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormBug1467Page, {}) }),
2777728016 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/form/complex', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormComplexPage, {}) }),
2777828017 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/spinner', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SpinnerPage, {}) }),
2777928018 /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Route, { path: '/search', element: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SearchPage, {}) }),
0 commit comments