import { $, expect } from '@wdio/globals'
export class CalcPage {
constructor() {
}
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');
});
});