Playwright Not able to access foreach variable inside of test

Viewed 145

I am using foreach to run the test for multiple users. I can access the variable from foreach inside of beforeAll, but does not work inside of test

the following line does not get the value as expected, i verified i have value for that column in the .csv

await page.locator('#searchByCode').fill(${user.Code}); // Does not Work , get undefined

import fs from 'fs';
import path from 'path';
import { test, expect, Page } from '@playwright/test';
import { parse } from 'csv-parse/sync';  //requires https://www.npmjs.com/package/csv-parse


const users = parse(fs.readFileSync(path.join(__dirname, '../users.csv')), {
    columns: true,
    skip_empty_lines: true
  });

//Want test inside of describe to run in serial mode
test.describe.configure({ mode: 'serial' });

test.use({ viewport: { width: 600, height: 900 } }); //Affects all Tests

let page: Page;

users.forEach(user => {
    console.log(user.Email);

    test.describe(`Login for user ${user.Email}`, () => {
       
        test.beforeAll(async ({ browser }) => {
            // Create page once and sign in.
            page = await browser.newPage();
            await page.goto('https://XXXXXXX.com');
            
            await page.fill("#logInEmail",`${user.Email}`);  **//This one works**
            
            //find password text(#loginInPassword) and enter password
            await page.fill('#loginInPassword', `${user.Password}`);  **//This one works**
        
            await Promise.all([
                page.waitForNavigation(/*{ url: 'https://getinline.net/' }*/),
                page.locator('#loginSignIn').click()
            ]);
        
            
        });
        
        test.afterAll(async () => {
        
            await page.close();
        });
        
       
        test('SearchBusinessByCode', async ({ browser }, testInfo) => {

            await page.locator('#searchByCode').fill(`${user.Password}`); **// Does not Work , get undefined**
            
            await page.locator('button', { hasText: 'Search' }).click();
            
        });

    });


}); //forEach
0 Answers
Related