From 9a143c8b1e666db3b1c3b9824b5f8bcda25cef86 Mon Sep 17 00:00:00 2001 From: Pragya Arora Date: Tue, 1 Jul 2025 16:17:10 +0530 Subject: [PATCH 1/6] FLEXY-0000 get csrf token from api/csrf --- .../src/utils/pages/view/twilio-console.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts index ffd1c9efa..6d3eb04f7 100644 --- a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts +++ b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts @@ -42,9 +42,14 @@ export class TwilioConsole extends Base { await this.goto({ baseUrl: this._baseUrl, path }); if (firstLoad) { - await this.elementVisible(TwilioConsole._loginForm, `Twilio Console's Login form`); - const csrfToken = await this.page.evaluate(() => { - return document.head.querySelector('meta[name="csrfToken"]')?.getAttribute('content'); + const csrfToken = await this.page.evaluate(async () => { + const response = await fetch('https://www.twilio.com/api/csrf'); + try { + const data = await response.json(); + return data.csrf; + } catch (e) { + throw new Error('Failed to parse CSRF token from /api/csrf response.'); + } }); if (csrfToken) { From 7549b9ff96ba9d076dd5cf8aa6eba9b2f8b7d998 Mon Sep 17 00:00:00 2001 From: Pragya Arora Date: Wed, 2 Jul 2025 11:49:26 +0530 Subject: [PATCH 2/6] FLEXY-0000 refactor --- .../src/utils/pages/view/twilio-console.ts | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts index 6d3eb04f7..fc98e3a10 100644 --- a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts +++ b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts @@ -26,6 +26,21 @@ export class TwilioConsole extends Base { */ private static _createLocalhostUrl = (port: number) => `http://localhost:${port}&localPort=${port}`; + /** + * Fetches CSRF token + */ + async fetchCsrfToken() { + try { + const response = await fetch('https://www.twilio.com/api/csrf'); + const data = await response.json(); + console.info('CSRF Token fetched:', data.csrf); + return data.csrf; + } catch (error) { + console.error('Error fetching CSRF token:', error); + return null; + } + } + /** * Logs user in through service-login * @param cookies @@ -42,15 +57,8 @@ export class TwilioConsole extends Base { await this.goto({ baseUrl: this._baseUrl, path }); if (firstLoad) { - const csrfToken = await this.page.evaluate(async () => { - const response = await fetch('https://www.twilio.com/api/csrf'); - try { - const data = await response.json(); - return data.csrf; - } catch (e) { - throw new Error('Failed to parse CSRF token from /api/csrf response.'); - } - }); + await this.elementVisible(TwilioConsole._loginForm, `Twilio Console's Login form`); + const csrfToken = await this.fetchCsrfToken(); if (csrfToken) { const loginURL = `${this._baseUrl}/userauth/submitLoginPassword`; From c8e3fa3963264f0b689d9bf29d20dd1029b3705e Mon Sep 17 00:00:00 2001 From: Pragya Arora Date: Wed, 2 Jul 2025 12:04:05 +0530 Subject: [PATCH 3/6] FLEXY-0000 updated logs --- .../src/utils/pages/view/twilio-console.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts index fc98e3a10..7ea49adae 100644 --- a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts +++ b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts @@ -33,10 +33,10 @@ export class TwilioConsole extends Base { try { const response = await fetch('https://www.twilio.com/api/csrf'); const data = await response.json(); - console.info('CSRF Token fetched:', data.csrf); + logger.info('CSRF Token fetched:', data.csrf); return data.csrf; } catch (error) { - console.error('Error fetching CSRF token:', error); + logger.error('Error fetching CSRF token:', error); return null; } } From fd644ab75f8602d51678c13dad77891c70c4cb77 Mon Sep 17 00:00:00 2001 From: Pragya Arora Date: Wed, 2 Jul 2025 13:25:37 +0530 Subject: [PATCH 4/6] FLEXY-0000 refactor --- .../src/utils/pages/view/twilio-console.ts | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts index 7ea49adae..e66730fb8 100644 --- a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts +++ b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts @@ -26,21 +26,6 @@ export class TwilioConsole extends Base { */ private static _createLocalhostUrl = (port: number) => `http://localhost:${port}&localPort=${port}`; - /** - * Fetches CSRF token - */ - async fetchCsrfToken() { - try { - const response = await fetch('https://www.twilio.com/api/csrf'); - const data = await response.json(); - logger.info('CSRF Token fetched:', data.csrf); - return data.csrf; - } catch (error) { - logger.error('Error fetching CSRF token:', error); - return null; - } - } - /** * Logs user in through service-login * @param cookies @@ -58,7 +43,18 @@ export class TwilioConsole extends Base { if (firstLoad) { await this.elementVisible(TwilioConsole._loginForm, `Twilio Console's Login form`); - const csrfToken = await this.fetchCsrfToken(); + + const csrfToken = await this.page.evaluate(async () => { + const response = await fetch('https://www.twilio.com/api/csrf'); + try { + const data = await response.json(); + logger.info('CSRF Token fetched:', data.csrf); + return data.csrf; + } catch (e) { + logger.error('Error fetching CSRF token:', e); + return null; + } + }); if (csrfToken) { const loginURL = `${this._baseUrl}/userauth/submitLoginPassword`; From 57d36f50f01e0365ddfc9f29b765be8dc1f90eff Mon Sep 17 00:00:00 2001 From: Pragya Arora Date: Wed, 2 Jul 2025 19:11:20 +0530 Subject: [PATCH 5/6] FLEXY-0000 updated logs --- .../src/utils/pages/view/twilio-console.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts index e66730fb8..294e45a72 100644 --- a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts +++ b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts @@ -45,16 +45,22 @@ export class TwilioConsole extends Base { await this.elementVisible(TwilioConsole._loginForm, `Twilio Console's Login form`); const csrfToken = await this.page.evaluate(async () => { - const response = await fetch('https://www.twilio.com/api/csrf'); try { + const response = await fetch('https://www.twilio.com/api/csrf'); const data = await response.json(); - logger.info('CSRF Token fetched:', data.csrf); + // eslint-disable-next-line no-console + console.info('CSRF Token fetched:', data.csrf); return data.csrf; } catch (e) { - logger.error('Error fetching CSRF token:', e); + // eslint-disable-next-line no-console + console.error('Error fetching CSRF token:', e); return null; } }); + + if (csrfToken) { + logger.info('CSRF Token fetched:', csrfToken); + } if (csrfToken) { const loginURL = `${this._baseUrl}/userauth/submitLoginPassword`; From d7f24e01cd990604ad638091def95fc7770b9e36 Mon Sep 17 00:00:00 2001 From: Pragya Arora Date: Wed, 2 Jul 2025 20:02:16 +0530 Subject: [PATCH 6/6] FLEXY-0000 debug tests --- .../src/utils/pages/view/twilio-console.ts | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts index 294e45a72..11bbe2685 100644 --- a/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts +++ b/packages/flex-plugin-e2e-tests/src/utils/pages/view/twilio-console.ts @@ -43,20 +43,16 @@ export class TwilioConsole extends Base { if (firstLoad) { await this.elementVisible(TwilioConsole._loginForm, `Twilio Console's Login form`); + // eslint-disable-next-line no-console + console.log('Fetching CSRF token for Twilio Console login'); const csrfToken = await this.page.evaluate(async () => { - try { - const response = await fetch('https://www.twilio.com/api/csrf'); - const data = await response.json(); - // eslint-disable-next-line no-console - console.info('CSRF Token fetched:', data.csrf); - return data.csrf; - } catch (e) { - // eslint-disable-next-line no-console - console.error('Error fetching CSRF token:', e); - return null; - } + const res = await fetch('https://www.twilio.com/api/csrf', { credentials: 'include' }); + const data = await res.json(); + return data.csrfToken; }); + // eslint-disable-next-line no-console + console.log('CSRF Token:', csrfToken); if (csrfToken) { logger.info('CSRF Token fetched:', csrfToken);