padloc/cypress/integration/03 - v3-compatibility.ts

112 lines
3.5 KiB
TypeScript

const v3_testItem = {
name: "Google",
username: "example@google.com",
password: "somethingsecret",
url: "https://google.com",
};
const v3_itemSearch = {
existing: "secret",
nonexistent: "apple",
};
const v3_email = `${Math.floor(Math.random() * 1e8)}@example.com`;
describe("v3 compatibility", () => {
it("can signup without errors", () => {
cy.v3_signup(v3_email);
});
it("can login without errors", () => {
cy.v3_login(v3_email);
});
it("can lock/unlock without errors", () => {
cy.v3_login(v3_email);
cy.v3_lock();
cy.v3_unlock(v3_email);
});
it("can create an item without errors", () => {
cy.v3_login(v3_email);
// Click plus sign
cy.doWithin(["pl-app", "pl-items-list"], () => cy.get("pl-icon[icon='add']").click());
// Click create
cy.doWithin(["pl-app", "pl-create-item-dialog"], () => cy.get(".footer button.primary").click(), 500);
cy.url().should("match", /\/items\/[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}/);
cy.doWithin(
["pl-app", "pl-item-dialog"],
() => {
// Fill in form
cy.typeWithin("pl-input#nameInput", v3_testItem.name, { force: true });
cy.doWithin(["pl-field.item:eq(0)"], () =>
cy.typeWithin("pl-input.value-input", v3_testItem.username, { force: true })
);
cy.doWithin(["pl-field.item:eq(1)"], () =>
cy.typeWithin("pl-input.value-input", v3_testItem.password, { force: true })
);
cy.doWithin(["pl-field.item:eq(2)"], () =>
cy.typeWithin("pl-input.value-input", v3_testItem.url, { force: true })
);
// Click save
cy.get("button.primary.save-button").click();
// Close dialog
cy.get("pl-icon[icon='close']").click();
},
1500
);
cy.url().should("include", "/items");
cy.url().should(
"not.match",
/\/items\/[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}/
);
});
it("can find an an item without errors", () => {
cy.v3_unlock(v3_email);
cy.doWithin(["pl-app", "pl-items-list"], () => {
// Click search sign
cy.get("header pl-icon[icon='search']").click();
// Find Item
cy.typeWithin("pl-input#filterInput", v3_itemSearch.existing, { force: true });
// Confirm we only find one
cy.get("#main pl-virtual-list div.content").children(".cell").should("have.length", 1);
// Confirm we find the right one
cy.get("#main pl-virtual-list div.content .cell .item-header .item-name").should(
"include.text",
v3_testItem.name
);
// Click clear search sign
cy.get("header pl-icon[icon='cancel']").click();
// Click search sign
cy.get("header pl-icon[icon='search']").click();
// Find non-existent Item
cy.typeWithin("pl-input#filterInput", v3_itemSearch.nonexistent, { force: true });
// Confirm we find none
cy.get("#main pl-virtual-list div.content").children(".cell").should("have.length", 0);
cy.get(".empty-placeholder").should("contain.text", "did not match any items");
});
});
});