🏡 index : container_build.git

import { $, expect } from '@wdio/globals'

export class CalcPage {
  constructor() {
    // this.title = 'Calculator';
  }

   open() {
    return browser.url('http://localhost:8000')
  }

  get doc() { return browser }

  get display() { return $('#display') }

  get button_one() { return $('#digit_1') }
  get button_two() { return $('#digit_2') }
  get button_three() { return $('#digit_3') }
  get button_four() { return $('#digit_4') }
  get button_five() { return $('#digit_5') }
  get button_six() { return $('#digit_6') }
  get button_seven() { return $('#digit_7') }
  get button_eight() { return $('#digit_8') }
  get button_nine() { return $('#digit_9') }
  get button_zero() { return $('#digit_0') }

  get operation_add() { return $('#operator_add') }
  get operation_multiply() { return $('#operator_multiply') }
  get operation_subtract() { return $('#operator_subtract') }
  get operation_divide() { return $('#operator_divide') }

  get calculate() { return $('#calculate') }
}

const calcPage = new CalcPage();

describe('Calculator Testing', () => {
  it('Should have a display, which shows zero', async () => {
    await calcPage.open();
    await expect(calcPage.display).toBePresent();
    calcPage.display.value
    await expect(calcPage.display).toHaveValue('0');
  });

  it('Should be able to add 1 + 2', async () => {
    await calcPage.open();
    await calcPage.button_one.click();
    await calcPage.operation_add.click();
    await calcPage.button_two.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('3');
  });

  it('Should be able to multiply 5 * 15', async () => {
    await calcPage.open();
    await calcPage.button_five.click();
    await calcPage.operation_multiply.click();
    await calcPage.button_one.click();
    await calcPage.button_five.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('75');
  });

  it('Should be able to divide 300 by 25', async () => {
    await calcPage.open();
    await calcPage.button_three.click();
    await calcPage.button_zero.click();
    await calcPage.button_zero.click();
    await calcPage.operation_divide.click();
    await calcPage.button_two.click();
    await calcPage.button_five.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('12');
  });

  it('Should support keyboard input', async () => {
    await calcPage.open();
    await calcPage.doc.keys('5');
    await calcPage.doc.keys('0');
    await calcPage.doc.keys('*');
    await calcPage.doc.keys('1');
    await calcPage.doc.keys('0');
    await calcPage.doc.keys('Enter');

    await expect(calcPage.display).toHaveValue('500');
  });
});