scrabble-solver
Version:
Scrabble Solver 2 - Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Scrabble Duel, Super Scrabble, Letter League, Crossplay, Literaki, and Kelimelik. Quickly find the top-scoring words using the given board and tiles.
124 lines (111 loc) • 4.61 kB
text/typescript
import {
assertResult,
closeModal,
getBoardTile,
getDictionary,
getDictionaryInput,
getDictionaryTitles,
getLoading,
getRackTile,
getResult,
getSettingOption,
getSettingsButton,
getTooltip,
moveMouseAway,
solve,
typeRack,
unregisterServiceWorkers,
visitIndex,
} from '../support';
describe('app', () => {
beforeEach(async () => {
await unregisterServiceWorkers();
});
afterEach(() => {
cy.clearLocalStorage();
});
it('has title', () => {
visitIndex();
cy.title().should('equal', 'Scrabble Solver 2');
});
it('has default setting values', () => {
visitIndex();
getSettingsButton().realClick();
getSettingOption('Game', 'Scrabble').should('be.checked');
getSettingOption('Language', 'English (US)').should('be.checked');
getSettingOption('Coordinates', 'Hidden').should('be.checked');
getSettingOption('Input mode', 'Keyboard').should('be.checked');
getSettingOption('Group remaining tiles', 'Do not group').should('be.checked');
});
describe('full app test', () => {
beforeEach(() => {
cy.intercept('/api/solve').as('solve');
cy.intercept('/api/dictionary/**/*').as('dictionary');
});
it('Scrabble - Polish', () => {
visitIndex();
getSettingsButton().realClick();
getSettingOption('Language', 'Polski').check();
getSettingOption('Współrzędne', 'Oryginalne').check();
closeModal();
typeRack('abł');
solve();
assertResult(0, 'bał', 14);
getResult(0).realHover();
getLoading().should('be.visible');
cy.wait('@dictionary');
getRackTile(0).parent().should('have.attr', 'role', 'mark');
getRackTile(1).parent().should('have.attr', 'role', 'mark');
getRackTile(2).parent().should('have.attr', 'role', 'mark');
getBoardTile(5, 7).should('have.value', 'b');
getBoardTile(6, 7).should('have.value', 'a');
getBoardTile(7, 7).should('have.value', 'ł');
getBoardTile(5, 7).parent().should('have.attr', 'role', 'mark');
getBoardTile(6, 7).parent().should('have.attr', 'role', 'mark');
getBoardTile(7, 7).parent().should('have.attr', 'role', 'mark');
getDictionaryInput().should('have.value', 'bał');
getLoading().should('not.exist');
getTooltip().should('be.visible');
moveMouseAway();
getTooltip().should('not.exist');
getRackTile(0).parent().should('not.have.attr', 'role', 'mark');
getDictionaryTitles().should('have.length', 1).and('have.text', 'bał');
getDictionary()
.should('include.text', 'bać się')
.and('include.text', 'odczuwać lęk, strach')
.and('include.text', 'być niespokojnym o kogoś lub o coś')
.and('include.text', 'nie śmieć, nie odważać się na coś');
cy.findByLabelText('Punkty').realClick();
getTooltip().should('be.visible').and('have.text', 'Punkty');
assertResult(0, 'ba', 8);
getResult(0).realHover();
getRackTile(0).parent().should('have.attr', 'role', 'mark');
getRackTile(1).parent().should('have.attr', 'role', 'mark');
getRackTile(2).parent().should('not.have.attr', 'role', 'mark');
getBoardTile(5, 7).should('not.have.value');
getBoardTile(6, 7).should('have.value', 'b');
getBoardTile(7, 7).should('have.value', 'a');
getBoardTile(5, 7).parent().should('not.have.attr', 'role', 'mark');
getBoardTile(6, 7).parent().should('have.attr', 'role', 'mark');
getBoardTile(7, 7).parent().should('have.attr', 'role', 'mark');
getDictionaryInput().should('have.value', 'ba');
getLoading().should('be.visible');
cy.wait('@dictionary');
getLoading().should('not.exist');
getDictionaryTitles().should('have.length', 1).and('have.text', 'ba');
getDictionary()
.should('include.text', 'wykrzyknik, który wyraża głównie podziw, zdziwienie')
.and('include.text', 'w wierzeniach staroegipskich: dusza ludzka ginąca wraz z ciałem');
getResult(0).realClick();
getRackTile(0).parent().should('not.have.attr', 'role', 'mark');
getRackTile(1).parent().should('not.have.attr', 'role', 'mark');
getRackTile(2).parent().should('not.have.attr', 'role', 'mark');
getRackTile(0).should('not.have.value');
getRackTile(1).should('not.have.value');
getRackTile(2).should('have.value', 'ł');
getBoardTile(6, 7).should('have.value', 'b');
getBoardTile(7, 7).should('have.value', 'a');
cy.findByLabelText('Rozwiąż').should('be.visible').and('be.enabled');
});
});
});