From e26bc22e1917c0d312f889c07f2a7e86e2bdf877 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 2 Mar 2026 11:55:15 +0100 Subject: [PATCH] fix(myTischtennis): ensure login intent handling and improve form submission logic - Added logic to ensure the presence of a login intent field in the login form, enhancing the reliability of the login process. - Updated the form submission mechanism to prioritize the explicit login submit button, falling back to a generic submit button if necessary. - Improved overall interaction flow during the login process, ensuring a smoother user experience. --- backend/clients/myTischtennisClient.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/backend/clients/myTischtennisClient.js b/backend/clients/myTischtennisClient.js index 4b1274d2..0c4fd820 100644 --- a/backend/clients/myTischtennisClient.js +++ b/backend/clients/myTischtennisClient.js @@ -536,10 +536,27 @@ class MyTischtennisClient { console.log('[myTischtennisClient.playwright] Waited after solved captcha:', postCaptchaDelayMs); } + // Ensure login intent is present and click the explicit login submit button. + await page.evaluate(() => { + const form = document.querySelector('form[action*="/login"]'); + if (!form) return; + let intentField = form.querySelector('input[name="intent"]'); + if (!intentField) { + intentField = document.createElement('input'); + intentField.setAttribute('type', 'hidden'); + intentField.setAttribute('name', 'intent'); + form.appendChild(intentField); + } + intentField.setAttribute('value', 'login'); + }); + // Submit form - const submitButton = page.locator('button[type="submit"], input[type="submit"]').first(); - if (await submitButton.count()) { - await submitButton.click({ timeout: 15000, noWaitAfter: true }); + const loginSubmitButton = page.locator('button[type="submit"][name="intent"][value="login"]').first(); + const genericSubmitButton = page.locator('button[type="submit"], input[type="submit"]').first(); + if (await loginSubmitButton.count()) { + await loginSubmitButton.click({ timeout: 15000, noWaitAfter: true }); + } else if (await genericSubmitButton.count()) { + await genericSubmitButton.click({ timeout: 15000, noWaitAfter: true }); } else { await page.keyboard.press('Enter'); }