import { environment }  from '../src/environments/environment'
import { loginTest } from './login.spec'
import * as faker from 'faker';

faker.locale = "pt_PT";

function sleep(milliseconds) {
    const date = Date.now();
    let currentDate = null;
    do {
      currentDate = Date.now();
    } while (currentDate - date < milliseconds);
  }

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

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

    test('Login', async()=> {
        await loginTest(page)
	},30000)

    test('[table] Open create event component', async () => {

        await page.setViewport({width: 1200, height: 720});
        await page.goto(process.env.PUPPETEER_HOST); // wait until page load
        await page.waitForSelector('ion-app')

        // wait for footer button
        await page.click('ion-tab-bar ion-tab-button:nth-child(2)')
        await page.waitForSelector('app-agenda')
        
        // click add event
        await page.click('ion-content  ion-row .cy-add-event')
        // wait for component
        await page.waitForSelector('app-new-event')
        
        expect(3 + 2).toBe(5);
    },30000);


    test('[table] Create Event', async () => {

        await page.setViewport({width: 1200, height: 720});
        await page.goto(process.env.PUPPETEER_HOST); // wait until page load
        await page.waitForSelector('ion-app')

        // wait for footer button
        await page.click('ion-tab-bar ion-tab-button:nth-child(2)')
        await page.waitForSelector('app-agenda')
        // click add event
        await page.click('ion-content  ion-row .cy-add-event')
        // wait for component
        await page.waitForSelector('app-new-event')

        // subject
        await page.type('app-new-event .ion-item-container input', faker.commerce.productDescription() )
        // Location
        await page.type('app-new-event .container-div:nth-child(2) input', faker.address.state()+" "+faker.address.city() )
        // Select Calendar
        // await page.click('app-new-event .container-div:nth-child(3) .mat-form-field-flex')
        // await page.waitForSelector('.cdk-overlay-connected-position-bounding-box')
        // await page.click('.cdk-overlay-connected-position-bounding-box mat-option')
        // select event type
        // await page.click('app-new-event .container-div:nth-child(4) .mat-form-field-flex')
        // await page.waitForSelector('.cdk-overlay-connected-position-bounding-box')
        // await page.click('.cdk-overlay-connected-position-bounding-box mat-option')

        // select start day
        // await page.click('app-new-event .container-div:nth-child(5) button')
        // await page.waitForSelector('.cdk-overlay-connected-position-bounding-box')
        // await page.click('.mat-calendar-next-button')
        // let selectedFDay = Math.floor(Math.random()*(25-1+1)+1);
        // let days = await page.$$(` .mat-calendar-body-cell `)
        // await days[selectedFDay].click()
        // await page.click('.cdk-overlay-connected-position-bounding-box .actions  button')

        // select end day
        // await page.click('app-new-event .container-div:nth-child(6) button')
        // await page.waitForSelector('.cdk-overlay-connected-position-bounding-box')
        // await page.click('.mat-calendar-next-button')
        // days = await page.$$(` .mat-calendar-body-cell `)
        // await days[selectedFDay+1].click()
        // await page.click('.cdk-overlay-connected-position-bounding-box .actions  button')

        // await page.click('app-new-event .container-div:nth-child(7) .mat-form-field-flex')
        // await page.waitForSelector('.cdk-overlay-connected-position-bounding-box')
        // await page.click('.cdk-overlay-connected-position-bounding-box mat-option')

        await page.click('app-new-event .container-div:nth-child(8) .add-people')
        await page.waitForSelector('app-attendee-modal .ng-star-inserted:nth-child(2)')
        await page.click('app-attendee-modal .ng-star-inserted:nth-child(2)')
        // save
        await page.click('app-attendee-modal ion-footer ion-buttons:nth-child(2)')
        // save
        let buttons = await page.$$('app-new-event ion-footer ion-buttons')
        buttons[1].click()

        await page.waitForSelector('.notification .success')


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

});

