You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
5.8 KiB
215 lines
5.8 KiB
/// <reference types="cypress" />
|
|
|
|
context("Cypress.Commands", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
// https://on.cypress.io/custom-commands
|
|
|
|
it(".add() - create a custom command", () => {
|
|
Cypress.Commands.add(
|
|
"console",
|
|
{
|
|
prevSubject: true,
|
|
},
|
|
(subject, method) => {
|
|
// the previous subject is automatically received
|
|
// and the commands arguments are shifted
|
|
|
|
// allow us to change the console method used
|
|
method = method || "log"
|
|
|
|
// log the subject to the console
|
|
// @ts-ignore TS7017
|
|
console[method]("The subject is", subject)
|
|
|
|
// whatever we return becomes the new subject
|
|
// we don't want to change the subject so
|
|
// we return whatever was passed in
|
|
return subject
|
|
}
|
|
)
|
|
|
|
// @ts-ignore TS2339
|
|
cy.get("button")
|
|
.console("info")
|
|
.then($button => {
|
|
// subject is still $button
|
|
})
|
|
})
|
|
})
|
|
|
|
context("Cypress.Cookies", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
// https://on.cypress.io/cookies
|
|
it(".debug() - enable or disable debugging", () => {
|
|
Cypress.Cookies.debug(true)
|
|
|
|
// Cypress will now log in the console when
|
|
// cookies are set or cleared
|
|
cy.setCookie("fakeCookie", "123ABC")
|
|
cy.clearCookie("fakeCookie")
|
|
cy.setCookie("fakeCookie", "123ABC")
|
|
cy.clearCookie("fakeCookie")
|
|
cy.setCookie("fakeCookie", "123ABC")
|
|
})
|
|
|
|
it(".preserveOnce() - preserve cookies by key", () => {
|
|
// normally cookies are reset after each test
|
|
cy.getCookie("fakeCookie").should("not.be.ok")
|
|
|
|
// preserving a cookie will not clear it when
|
|
// the next test starts
|
|
cy.setCookie("lastCookie", "789XYZ")
|
|
Cypress.Cookies.preserveOnce("lastCookie")
|
|
})
|
|
|
|
it(".defaults() - set defaults for all cookies", () => {
|
|
// now any cookie with the name 'session_id' will
|
|
// not be cleared before each new test runs
|
|
Cypress.Cookies.defaults({
|
|
preserve: "session_id",
|
|
})
|
|
})
|
|
})
|
|
|
|
context("Cypress.arch", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
it("Get CPU architecture name of underlying OS", () => {
|
|
// https://on.cypress.io/arch
|
|
expect(Cypress.arch).to.exist
|
|
})
|
|
})
|
|
|
|
context("Cypress.config()", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
it("Get and set configuration options", () => {
|
|
// https://on.cypress.io/config
|
|
let myConfig = Cypress.config()
|
|
|
|
expect(myConfig).to.have.property("animationDistanceThreshold", 5)
|
|
expect(myConfig).to.have.property("baseUrl", null)
|
|
expect(myConfig).to.have.property("defaultCommandTimeout", 4000)
|
|
expect(myConfig).to.have.property("requestTimeout", 5000)
|
|
expect(myConfig).to.have.property("responseTimeout", 30000)
|
|
expect(myConfig).to.have.property("viewportHeight", 660)
|
|
expect(myConfig).to.have.property("viewportWidth", 1000)
|
|
expect(myConfig).to.have.property("pageLoadTimeout", 60000)
|
|
expect(myConfig).to.have.property("waitForAnimations", true)
|
|
|
|
expect(Cypress.config("pageLoadTimeout")).to.eq(60000)
|
|
|
|
// this will change the config for the rest of your tests!
|
|
Cypress.config("pageLoadTimeout", 20000)
|
|
|
|
expect(Cypress.config("pageLoadTimeout")).to.eq(20000)
|
|
|
|
Cypress.config("pageLoadTimeout", 60000)
|
|
})
|
|
})
|
|
|
|
context("Cypress.dom", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
// https://on.cypress.io/dom
|
|
it(".isHidden() - determine if a DOM element is hidden", () => {
|
|
let hiddenP = Cypress.$(".dom-p p.hidden").get(0)
|
|
let visibleP = Cypress.$(".dom-p p.visible").get(0)
|
|
|
|
// our first paragraph has css class 'hidden'
|
|
expect(Cypress.dom.isHidden(hiddenP)).to.be.true
|
|
expect(Cypress.dom.isHidden(visibleP)).to.be.false
|
|
})
|
|
})
|
|
|
|
context("Cypress.env()", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
// We can set environment variables for highly dynamic values
|
|
|
|
// https://on.cypress.io/environment-variables
|
|
it("Get environment variables", () => {
|
|
// https://on.cypress.io/env
|
|
// set multiple environment variables
|
|
Cypress.env({
|
|
host: "veronica.dev.local",
|
|
api_server: "http://localhost:8888/v1/",
|
|
})
|
|
|
|
// get environment variable
|
|
expect(Cypress.env("host")).to.eq("veronica.dev.local")
|
|
|
|
// set environment variable
|
|
Cypress.env("api_server", "http://localhost:8888/v2/")
|
|
expect(Cypress.env("api_server")).to.eq("http://localhost:8888/v2/")
|
|
|
|
// get all environment variable
|
|
expect(Cypress.env()).to.have.property("host", "veronica.dev.local")
|
|
expect(Cypress.env()).to.have.property(
|
|
"api_server",
|
|
"http://localhost:8888/v2/"
|
|
)
|
|
})
|
|
})
|
|
|
|
context("Cypress.log", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
it("Control what is printed to the Command Log", () => {
|
|
// https://on.cypress.io/cypress-log
|
|
})
|
|
})
|
|
|
|
context("Cypress.platform", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
it("Get underlying OS name", () => {
|
|
// https://on.cypress.io/platform
|
|
expect(Cypress.platform).to.be.exist
|
|
})
|
|
})
|
|
|
|
context("Cypress.version", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
it("Get current version of Cypress being run", () => {
|
|
// https://on.cypress.io/version
|
|
expect(Cypress.version).to.be.exist
|
|
})
|
|
})
|
|
|
|
context("Cypress.spec", () => {
|
|
beforeEach(() => {
|
|
cy.visit("https://example.cypress.io/cypress-api")
|
|
})
|
|
|
|
it("Get current spec information", () => {
|
|
// https://on.cypress.io/spec
|
|
// wrap the object so we can inspect it easily by clicking in the command log
|
|
cy.wrap(Cypress.spec).should("include.keys", [
|
|
"name",
|
|
"relative",
|
|
"absolute",
|
|
])
|
|
})
|
|
})
|
|
|