From 256993a33ce1d39a3769df3cd0ab1c75f5fe6754 Mon Sep 17 00:00:00 2001 From: Kyle Florence Date: Fri, 19 Jan 2024 18:28:13 -0600 Subject: [PATCH] Fix tests Add a slight wait to checking if element has class. Since updates happen asynchronously now the puzzle solved class is not immediately available on the body after a move is made. --- test/fixtures.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/fixtures.js b/test/fixtures.js index 51c6eb0..1c8a740 100644 --- a/test/fixtures.js +++ b/test/fixtures.js @@ -1,6 +1,6 @@ require('chromedriver') const chrome = require('selenium-webdriver/chrome') -const { Builder, By, until } = require('selenium-webdriver') +const { Builder, By, until, WebElementCondition } = require('selenium-webdriver') class PuzzleFixture { driver @@ -58,7 +58,7 @@ class PuzzleFixture { } async isSolved () { - return hasClass(this.elements.body, 'puzzle-solved') + return elementHasClass(this.elements.body, 'puzzle-solved') } async selectModifier (name) { @@ -74,9 +74,10 @@ class PuzzleFixture { static baseUrl = 'http://localhost:1234' } -async function hasClass (element, name) { - const classes = (await element.getAttribute('class')).split(' ') - return classes.some((className) => name === className) +function elementHasClass (element, name) { + return new WebElementCondition('until element has class', function () { + return element.getAttribute('class').then((classes) => classes.split(' ').some((className) => name === className)) + }) } module.exports = {