Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .teamcity/_self/CalypsoE2ETestsBuildTemplate.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ object CalypsoE2ETestsBuildTemplate : Template({
param("env.NODE_CONFIG_ENV", "test")
param("env.PLAYWRIGHT_BROWSERS_PATH", "0")
param("env.LOCALE", "en")
// No AUTHENTICATE_ACCOUNTS on purpose: setting it replaces the whole list the
// prime-logins setup project logs in as, so a value here would skip every account it
// doesn't name. Set it only on a build type running a narrow group, or to an empty
// value to skip priming. See test/e2e/setup/prime-logins.setup.ts.
// required in the CTRF report
param("env.BRANCH_NAME", "%teamcity.build.branch%")
param("PROJECT", "desktop")
Expand Down
1 change: 0 additions & 1 deletion .teamcity/_self/projects/MarTech.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ object ToSAcceptanceTracking : BuildType({
param("TEST_GROUP", "@legal")
param("CALYPSO_BASE_URL", "https://wordpress.com")
param("DASHBOARD_BASE_URL", "https://my.wordpress.com")
param("env.AUTHENTICATE_ACCOUNTS", "")
}

steps {
Expand Down
4 changes: 0 additions & 4 deletions .teamcity/_self/projects/WPComTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ fun gutenbergPlaywrightBuildType( targetDevice: String, buildUuid: String, atomi
checked = "true",
unchecked = "false"
)
param("env.AUTHENTICATE_ACCOUNTS", "gutenbergSimpleSiteEdgeUser,gutenbergSimpleSiteUser,coBlocksSimpleSiteEdgeUser,simpleSitePersonalPlanUser,gutenbergAtomicSiteUser,gutenbergAtomicSiteEdgeUser,gutenbergAtomicSiteEdgeNightliesUser")
if (atomic) {
param("env.TEST_ON_ATOMIC", "true")
// Overrides the inherited max workers settings and sets it to not run any tests in parallel.
Expand Down Expand Up @@ -391,7 +390,6 @@ private object I18NTests : BuildType({
param("CALYPSO_BASE_URL", "https://wordpress.com")
param("DASHBOARD_BASE_URL", "https://my.wordpress.com")
param("env.E2E_CTRF_APP_NAME", "i18n (calypso)")
param("env.AUTHENTICATE_ACCOUNTS", "i18nUser")
}

features {
Expand Down Expand Up @@ -436,7 +434,6 @@ private object P2E2ETests : BuildType({
param("CALYPSO_BASE_URL", "https://wpcalypso.wordpress.com")
param("DASHBOARD_BASE_URL", "https://my.wordpress.com")
param("env.E2E_CTRF_APP_NAME", "p2 (calypso)")
param("env.AUTHENTICATE_ACCOUNTS", "p2User")
}

features {
Expand Down Expand Up @@ -488,7 +485,6 @@ private object GutenbergPlaywrightTests : BuildType({
param("CALYPSO_BASE_URL", "https://wordpress.com")
param("DASHBOARD_BASE_URL", "https://my.wordpress.com")
param("env.E2E_CTRF_APP_NAME", "gutenberg (calypso)")
param("env.AUTHENTICATE_ACCOUNTS", "gutenbergSimpleSiteEdgeUser,gutenbergSimpleSiteUser,simpleSitePersonalPlanUser,gutenbergAtomicSiteUser,gutenbergAtomicSiteEdgeUser,gutenbergAtomicSiteEdgeNightliesUser")
password("GB_E2E_ANNOUNCEMENT_SLACK_API_TOKEN", "credentialsJSON:8196e9b8-cf0a-4ab5-9547-95145134f04a", display = ParameterDisplay.HIDDEN);
// Uncomment the following to route it to the test channel, don't forget to change the reference in the exec() calls below, too.
// Ask someone from the Team Calypso Platform to know what these channels are. They are also available in the source for `announce.sh` (par of Gutenbot).
Expand Down
19 changes: 0 additions & 19 deletions packages/calypso-e2e/src/env-variables.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,14 @@
import crypto from 'crypto';
import path from 'path';
import { getMag16Locales, getViewports } from './data-helper';
import { TEST_ACCOUNT_NAMES } from './secrets';
import { SupportedEnvVariables, JetpackTarget, AtomicVariation } from './types/env-variables.types';
import { TestAccountName } from '.';

class EnvVariables implements SupportedEnvVariables {
private _defaultEnvVariables: SupportedEnvVariables = {
A8C_FOR_AGENCIES_URL: 'https://agencies.automattic.com',
ALLURE_RESULTS_PATH: '',
ARTIFACTS_PATH: path.join( process.cwd(), 'results' ),
ATOMIC_VARIATION: 'default',
AUTHENTICATE_ACCOUNTS: [],
BROWSER_NAME: 'chromium',
CALYPSO_BASE_URL: `http://calypso.localhost:${ process.env.PORT || 3000 }`,
COBLOCKS_EDGE: false,
Expand Down Expand Up @@ -111,22 +108,6 @@ class EnvVariables implements SupportedEnvVariables {
: this._defaultEnvVariables.COBLOCKS_EDGE;
}

get AUTHENTICATE_ACCOUNTS(): TestAccountName[] {
const value = process.env.AUTHENTICATE_ACCOUNTS;
if ( ! value ) {
return this._defaultEnvVariables.AUTHENTICATE_ACCOUNTS;
}

const parsedAccounts: TestAccountName[] = value.split( ',' ) as TestAccountName[];
const supportedValues = new Set< TestAccountName >( TEST_ACCOUNT_NAMES );
if ( ! parsedAccounts.every( ( account ) => supportedValues.has( account ) ) ) {
throw new Error(
`Unknown AUTHENTICATE_ACCOUNTS value: ${ value }.\nSupported values: ${ TEST_ACCOUNT_NAMES }`
);
}
return parsedAccounts;
}

get COOKIES_PATH(): string {
const value = process.env.COOKIES_PATH;
return value ? value : this._defaultEnvVariables.COOKIES_PATH;
Expand Down
64 changes: 1 addition & 63 deletions packages/calypso-e2e/src/jest-playwright-config/global-setup.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
/* eslint-disable require-jsdoc */
import { Browser, chromium } from 'playwright';
import envVariables from '../env-variables';
import { TestAccount } from '../lib/test-account';
import pwConfig from './playwright-config';

export default async (): Promise< void > => {
const { AUTHENTICATE_ACCOUNTS, CALYPSO_BASE_URL } = envVariables;
const { CALYPSO_BASE_URL } = envVariables;

// Checks whether the Calypso server is running so we can exit early with a help message.
// Don't run in CI because there seems to be a timing issue about whether calypso.live will be ready in time.
Expand All @@ -32,62 +28,4 @@ export default async (): Promise< void > => {
process.exit( 1 );
}
}

// If PWDEBUG mode is enabled (stepping through each step)
// don't execute the cookie refresh.
if ( process.env.PWDEBUG ) {
return;
}

// If the list of accounts for which to pre-authenticate and save cookies
// for is empty, then don't run.
if ( AUTHENTICATE_ACCOUNTS.length === 0 ) {
return;
}

const browser = await chromium.launch( {
...pwConfig.launchOptions,
headless: true,
} );

await Promise.all(
AUTHENTICATE_ACCOUNTS.map( async ( accountName ) => {
const testAccount = new TestAccount( accountName );
if ( await testAccount.hasFreshAuthCookies() ) {
return;
}

await loginAndSaveCookiesWithRetry( testAccount, browser );
} )
);

await browser.close();
};

async function loginAndSaveCookiesWithRetry( testAccount: TestAccount, browser: Browser ) {
const MAX_ATTEMPTS = 2;
let numberOfAttempts = 0;

let error: Error | undefined;
while ( numberOfAttempts < MAX_ATTEMPTS ) {
try {
return await loginAndSaveCookies( testAccount, browser );
} catch ( err ) {
numberOfAttempts++;
error = err as Error;
}
}

throw error;
}

async function loginAndSaveCookies( testAccount: TestAccount, browser: Browser ) {
const page = await browser.newPage( pwConfig.contextOptions );
page.setDefaultTimeout( envVariables.TIMEOUT );
try {
await testAccount.logInViaLoginPage( page );
await testAccount.saveAuthCookies( page.context() );
} finally {
await page.close();
}
}
Loading
Loading