/// context("Utilities", () => { beforeEach(() => { cy.visit("https://example.cypress.io/utilities"); }); it("Cypress._ - call a lodash method", () => { // https://on.cypress.io/_ cy.request("https://jsonplaceholder.cypress.io/users").then(response => { const ids = Cypress._.chain(response.body) .map("id") .take(3) .value(); expect(ids).to.deep.eq([1, 2, 3]); }); }); it("Cypress.$ - call a jQuery method", () => { // https://on.cypress.io/$ const $li = Cypress.$(".utility-jquery li:first"); cy.wrap($li) .should("not.have.class", "active") .click() .should("have.class", "active"); }); it("Cypress.Blob - blob utilities and base64 string conversion", () => { // https://on.cypress.io/blob cy.get(".utility-blob").then($div => // https://github.com/nolanlawson/blob-util#imgSrcToDataURL // get the dataUrl string for the javascript-logo Cypress.Blob.imgSrcToDataURL( "https://example.cypress.io/assets/img/javascript-logo.png", undefined, "anonymous", ).then(dataUrl => { // create an element and set its src to the dataUrl const img = Cypress.$("", { src: dataUrl }); // need to explicitly return cy here since we are initially returning // the Cypress.Blob.imgSrcToDataURL promise to our test // append the image $div.append(img); cy.get(".utility-blob img") .click() .should("have.attr", "src", dataUrl); }), ); }); it("Cypress.minimatch - test out glob patterns against strings", () => { // https://on.cypress.io/minimatch let matching = Cypress.minimatch("/users/1/comments", "/users/*/comments", { matchBase: true, }); expect(matching, "matching wildcard").to.be.true; matching = Cypress.minimatch("/users/1/comments/2", "/users/*/comments", { matchBase: true, }); expect(matching, "comments").to.be.false; // ** matches against all downstream path segments matching = Cypress.minimatch("/foo/bar/baz/123/quux?a=b&c=2", "/foo/**", { matchBase: true, }); expect(matching, "comments").to.be.true; // whereas * matches only the next path segment matching = Cypress.minimatch("/foo/bar/baz/123/quux?a=b&c=2", "/foo/*", { matchBase: false, }); expect(matching, "comments").to.be.false; }); it("Cypress.moment() - format or parse dates using a moment method", () => { // https://on.cypress.io/moment const time = Cypress.moment("2014-04-25T19:38:53.196Z") .utc() .format("h:mm A"); expect(time).to.be.a("string"); cy.get(".utility-moment") .contains("3:38 PM") .should("have.class", "badge"); // the time in the element should be between 3pm and 5pm const start = Cypress.moment("3:00 PM", "LT"); const end = Cypress.moment("5:00 PM", "LT"); cy.get(".utility-moment .badge").should($el => { // parse American time like "3:38 PM" const m = Cypress.moment($el.text().trim(), "LT"); // display hours + minutes + AM|PM const f = "h:mm A"; expect( m.isBetween(start, end), `${m.format(f)} should be between ${start.format(f)} and ${end.format( f, )}`, ).to.be.true; }); }); it("Cypress.Promise - instantiate a bluebird promise", () => { // https://on.cypress.io/promise let waited = false; /** * @return Bluebird */ function waitOneSecond() { // return a promise that resolves after 1 second // @ts-ignore TS2351 (new Cypress.Promise) return new Cypress.Promise((resolve, reject) => { setTimeout(() => { // set waited to true waited = true; // resolve with 'foo' string resolve("foo"); }, 1000); }); } cy.then(() => // return a promise to cy.then() that // is awaited until it resolves // @ts-ignore TS7006 waitOneSecond().then(str => { expect(str).to.eq("foo"); expect(waited).to.be.true; }), ); }); });