import { environment }  from './../src/environments/environment'


const windowSet = (page, name, value) => {
    page.evaluateOnNewDocument(`
    Object.defineProperty(window, '${name}', {
      get() {
        return '${value}'
      }
    })
  `)
}

export const loginTest = async (page) => {
    await page.setViewport({width: 1200, height: 720});
    await page.goto(process.env.PUPPETEER_HOST); // wait until page load
    await page.waitForSelector('.btn-ok')
    await page.waitForSelector('ion-app')

    const pathname = await page.evaluate( () => window.location.pathname)

    if (pathname == '/') {
        await page.evaluate( () => {
            let a:  HTMLInputElement = document.querySelector('input[type="text"]')
            a.value = ''

            let b:  HTMLInputElement = document.querySelector('input[type="password"')
            b.value = ''
        })

        await page.type('input[type="text"]', environment.defaultuser);
        await page.type('input[type="password"]', environment.defaultuserpwd); 
        // click and wait for navigation

		windowSet(page, 'cy', true)
		
        await Promise.all([
            page.click('.btn-ok'),
            // page.waitForNavigation({ waitUntil: 'networkidle0' }),
        ]);

        await page.waitForSelector('.circle')
        // define code
        await page.click('.circle')
        await page.click('.circle')
        await page.click('.circle')

        // clear code
        await page.click('.cy-clear')

        // define code
        await page.click('.circle')
        await page.click('.circle')
        await page.click('.circle')
        await page.click('.circle')

        await page.waitForSelector('.div-profile')
    }
}

describe('Puppeteer tests', () => {

	beforeAll(async () => {
		// await page.goto(process.env.PUPPETEER_HOST)
	})

	test('[table] Clear Code  button and set pin', async () => {

		const pathname = await page.evaluate( () => window.location.pathname)
		if (pathname == '/') {
						
			// const browser = await puppeteer.launch({headless: false});
			await page.setViewport({width: 1200, height: 720});
			await page.goto(process.env.PUPPETEER_HOST); // wait until page load
			await page.waitForSelector('.btn-ok')


			await page.evaluate( () => {
				let a:  HTMLInputElement = document.querySelector('input[type="text"]')
				a.value = ''

				let b:  HTMLInputElement = document.querySelector('input[type="password"')
				b.value = ''
			})

			await page.type('input[type="text"]', environment.defaultuser);
			await page.type('input[type="password"]', environment.defaultuserpwd); 
			// click and wait for navigation
			await Promise.all([
					page.click('.btn-ok'),
					// page.waitForNavigation({ waitUntil: 'networkidle0' }),
			]);

			await page.waitForSelector('.circle')
			// define code
			await page.click('.circle')
			await page.click('.circle')
			await page.click('.circle')

			// clear code
			await page.click('.cy-clear')

			// define code
			await page.click('.circle')
			await page.click('.circle')
			await page.click('.circle')
			await page.click('.circle')

			await page.waitForSelector('.div-profile')
			await page.click('.div-profile')
			
		}

		expect(3 + 2).toBe(5);
	},30000);

});

