diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index 615ee56b..9b3c3f32 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -49,28 +49,8 @@ CURRENT TODOs @@@@@@@@@@@ ROADMAP STAGE 2: -GRID ERROR:Price first column multiple records with price the same, value should not be used as a key WTF? -BUG is that records generation is putting the value of the column as the ID of the column -This was triggered by editing the datafilter and putting price as the first column, apparently the datagrid assumes column 0 is always the ID column -So actually this may need a more deterministic way to identify the rowid like picklist does - -Vue warning: -Duplicate keys detected: '123.45'. This may cause an update error. -trace: - -found in - ----> at src/components/gz-data-table.vue - at src/views/widgets.vue - - - at src/App.vue - - -todo: de-var-ification - - use const for unchanging values, let everywhere else, no var anywhere and test out before moving on - todo: add tests for the following: + - alternate language login works - About form displays critical info - Help link goes where it should - datagrid diff --git a/ayanova/tests/e2e/specs/translation-about.js b/ayanova/tests/e2e/specs/translation-about.js new file mode 100644 index 00000000..afd4463e --- /dev/null +++ b/ayanova/tests/e2e/specs/translation-about.js @@ -0,0 +1,99 @@ +// https://docs.cypress.io/api/introduction/api.html + +describe("Login", () => { + it("Successfully logs in as french user about form works", () => { + cy.visit("/login"); + + //FRENCH + cy.get("input[name=username]") + .clear() + .type("fr"); + + // {enter} causes the form to submit + cy.get("input[name=password]") + .clear() + .type("fr{enter}"); + + // we should be redirected to /dashboard + cy.url().should("include", "/home-dashboard"); + + //nav to about form + cy.get("[data-cy=contextmenu]").click(); + cy.get('[data-cy="app:nav:abt"]').click(); + cy.url().should("include", "/about"); + + //ensure there is french on the form + //title + cy.contains("À propos d'AyaNova"); + //server section + cy.contains("Navigateur"); + //open log + cy.get('[data-cy="app:nav:log"] > .v-btn__content').click(); + cy.url().should("include", "/applog"); + + //LOGOUT + cy.get("[data-cy=contextmenu]").click(); + cy.get("[data-cy='app:logout']").click(); + cy.url().should("include", "/login"); + //----------------------------------------------------- + //SPANISH + cy.get("input[name=username]") + .clear() + .type("es"); + + // {enter} causes the form to submit + cy.get("input[name=password]") + .clear() + .type("es{enter}"); + + // we should be redirected to /dashboard + cy.url().should("include", "/home-dashboard"); + + //nav to about form + cy.get("[data-cy=contextmenu]").click(); + cy.get('[data-cy="app:nav:abt"]').click(); + + //ensure there is translated text on the form + //title + cy.contains("Acerca de AyaNova"); + //server section + cy.contains("Navegador"); + + //LOGOUT + cy.get("[data-cy=contextmenu]").click(); + cy.get("[data-cy='app:logout']").click(); + cy.url().should("include", "/login"); + + //------------------------- + //----------------------------------------------------- + //GERMAN + cy.get("input[name=username]") + .clear() + .type("de"); + + // {enter} causes the form to submit + cy.get("input[name=password]") + .clear() + .type("de{enter}"); + + // we should be redirected to /dashboard + cy.url().should("include", "/home-dashboard"); + + //nav to about form + cy.get("[data-cy=contextmenu]").click(); + cy.get('[data-cy="app:nav:abt"]').click(); + + //ensure there is translated text on the form + //title + cy.contains("Über AyaNova"); + //license to (uniquely german) + cy.contains("Registrierter Benutzer"); + + //LOGOUT + cy.get("[data-cy=contextmenu]").click(); + cy.get("[data-cy='app:logout']").click(); + cy.url().should("include", "/login"); + + //------------------------- + }); +});