Skip to content

Object damage calculator · E2E tests

0 modules · 0 exports · 0 repositories · 5 e2e tests · 1 route

  • Arrange data setup
  • Act what the user does
  • Assert what is expected

Object Damage Calculator

operates damage type select, max damage > min damage

Renders/object-damage-calculator

LOLogged out
Object damage calculator page
Act
  1. Open the object damage calculator page
    await calculator.goto();
  2. Pick weapon “Sploosh-o-matic”
    await calculator.pickWeapon("Sploosh-o-matic");
  3. Hit points → hp
    const hp = calculator.hitPoints();
  4. Damage → dmg
    const dmg = calculator.damage();
  5. Hits to destroy → htd
    const htd = calculator.hitsToDestroy();
Arrange
  1. hpBefore = (await hp.textContent())!
    const hpBefore = (await hp.textContent())!;
  2. dmgBefore = (await dmg.textContent())!
    const dmgBefore = (await dmg.textContent())!;
  3. htdBefore = (await htd.textContent())!
    const htdBefore = (await htd.textContent())!;
Assert
  1. Number(htdBefore) is Math.ceil(Number(hpBefore) / Number(dmgBefore))
    expect(Number(htdBefore)).toBe(
    	Math.ceil(Number(hpBefore) / Number(dmgBefore)),
    );
Act
  1. Select damage type “NORMAL_MIN”
    await calculator.selectDamageType("NORMAL_MIN");
Assert
  1. hp reads hpBefore
    await expect(hp).toHaveText(hpBefore);
  2. dmg does not read dmgBefore
    await expect(dmg).not.toHaveText(dmgBefore);
  3. htd does not read htdBefore
    await expect(htd).not.toHaveText(htdBefore);
Source
test("operates damage type select, max damage > min damage", async ({
	page,
}) => {
	const calculator = new ObjectDamageCalculatorPage(page);
	await calculator.goto();
	await calculator.pickWeapon("Sploosh-o-matic");

	const hp = calculator.hitPoints();
	const dmg = calculator.damage();
	const htd = calculator.hitsToDestroy();

	const hpBefore = (await hp.textContent())!;
	const dmgBefore = (await dmg.textContent())!;
	const htdBefore = (await htd.textContent())!;

	expect(Number(htdBefore)).toBe(
		Math.ceil(Number(hpBefore) / Number(dmgBefore)),
	);

	await calculator.selectDamageType("NORMAL_MIN");

	await expect(hp).toHaveText(hpBefore);
	await expect(dmg).not.toHaveText(dmgBefore);
	await expect(htd).not.toHaveText(htdBefore);
})

changes weapon and saves it to url

Renders/object-damage-calculator

LOLogged out
Object damage calculator page
Act
  1. Open the object damage calculator page
    await calculator.goto();
  2. Pick weapon “Sploosh-o-matic”
    await calculator.pickWeapon("Sploosh-o-matic");
  3. Damage → dmg
    const dmg = calculator.damage();
Arrange
  1. dmgBefore = (await dmg.textContent())!
    const dmgBefore = (await dmg.textContent())!;
Act
  1. Change weapon “Luna Blaster”
    await calculator.changeWeapon("Luna Blaster");
Assert
  1. dmg does not read dmgBefore
    await expect(dmg).not.toHaveText(dmgBefore);
Act
  1. Reload the page
    await page.reload();
Assert
  1. dmg does not read dmgBefore
    await expect(dmg).not.toHaveText(dmgBefore);
Source
test("changes weapon and saves it to url", async ({ page }) => {
	const calculator = new ObjectDamageCalculatorPage(page);
	await calculator.goto();
	await calculator.pickWeapon("Sploosh-o-matic");

	const dmg = calculator.damage();
	const dmgBefore = (await dmg.textContent())!;

	await calculator.changeWeapon("Luna Blaster");

	await expect(dmg).not.toHaveText(dmgBefore);
	await page.reload();
	await expect(dmg).not.toHaveText(dmgBefore);
})

multiplier switch increases damage

Renders/object-damage-calculator

LOLogged out
Object damage calculator page
Act
  1. Open the object damage calculator page
    await calculator.goto();
  2. Pick weapon “Tri-Stringer”
    await calculator.pickWeapon("Tri-Stringer");
  3. Damage → dmg
    const dmg = calculator.damage();
Arrange
  1. dmgBefore = (await dmg.textContent())!
    const dmgBefore = (await dmg.textContent())!;
Act
  1. Toggle multiplier
    await calculator.toggleMultiplier();
Assert
  1. Multiplier is on by default

    dmg does not read dmgBefore
    await expect(dmg).not.toHaveText(dmgBefore);
Source
test("multiplier switch increases damage", async ({ page }) => {
	const calculator = new ObjectDamageCalculatorPage(page);
	await calculator.goto();
	await calculator.pickWeapon("Tri-Stringer");

	const dmg = calculator.damage();
	const dmgBefore = (await dmg.textContent())!;
	await calculator.toggleMultiplier();

	// Multiplier is on by default
	await expect(dmg).not.toHaveText(dmgBefore);
})

object hp increases when ability points added

Renders/object-damage-calculator

LOLogged out
Object damage calculator page
Act
  1. Open the object damage calculator page
    await calculator.goto();
  2. Pick weapon “Sploosh-o-matic”
    await calculator.pickWeapon("Sploosh-o-matic");
  3. Hit points → crabTankHp
    const crabTankHp = calculator.hitPoints();
Arrange
  1. crabTankHpBefore = (await crabTankHp.textContent())!
    const crabTankHpBefore = (await crabTankHp.textContent())!;
Act
  1. Hit points “Wsb_Shield” → splashWallHp
    const splashWallHp = calculator.hitPoints("Wsb_Shield");
Arrange
  1. splashWallHpBefore = (await splashWallHp.textContent())!
    const splashWallHpBefore = (await splashWallHp.textContent())!;
Act
  1. Select ability points 10
    await calculator.selectAbilityPoints(10);
Assert
  1. Crab Tank doesn't gain HP from ability points

    crabTankHp reads crabTankHpBefore
    await expect(crabTankHp).toHaveText(crabTankHpBefore);
  2. ... but Splash Wall does

    splashWallHp does not read splashWallHpBefore
    await expect(splashWallHp).not.toHaveText(splashWallHpBefore);
Source
test("object hp increases when ability points added", async ({ page }) => {
	const calculator = new ObjectDamageCalculatorPage(page);
	await calculator.goto();
	await calculator.pickWeapon("Sploosh-o-matic");

	const crabTankHp = calculator.hitPoints();
	const crabTankHpBefore = (await crabTankHp.textContent())!;

	const splashWallHp = calculator.hitPoints("Wsb_Shield");
	const splashWallHpBefore = (await splashWallHp.textContent())!;

	await calculator.selectAbilityPoints(10);

	// Crab Tank doesn't gain HP from ability points
	await expect(crabTankHp).toHaveText(crabTankHpBefore);
	// ... but Splash Wall does
	await expect(splashWallHp).not.toHaveText(splashWallHpBefore);
})

picks a sub weapon from its own category

Renders/object-damage-calculator

LOLogged out
Object damage calculator page
Act
  1. Open the object damage calculator page
    await calculator.goto();
  2. Pick weapon “Splat Bomb”
    await calculator.pickWeapon("Splat Bomb");
Assert
  1. first damage is visible
    await expect(calculator.damage().first()).toBeVisible();
  2. the page URL is /weapon=SUB_0/
    await expect(page).toHaveURL(/weapon=SUB_0/);
Source
test("picks a sub weapon from its own category", async ({ page }) => {
	const calculator = new ObjectDamageCalculatorPage(page);
	await calculator.goto();
	await calculator.pickWeapon("Splat Bomb");

	await expect(calculator.damage().first()).toBeVisible();
	await expect(page).toHaveURL(/weapon=SUB_0/);
})