cypress-msal icon indicating copy to clipboard operation
cypress-msal copied to clipboard

Plugins folder not supported

Open AlphaGeek opened this issue 2 years ago • 8 comments

Docs say to include the code with the publicClientConfig, module.exports, etc in the /plugins/index.js file however I am using Cypress 10.4 and the plugins folder is no longer supported. Is there an example of how to use this with Cypress 10+?

AlphaGeek avatar Dec 06 '22 19:12 AlphaGeek

Ah yes, they changed cypress config in 10.* :(

It should be fairly similar though, can you test something like this and see if it works for you?

in cypress.config.js (should be on project root, not under cypress/, I believe)

import { defineConfig } from 'cypress'
import generateLogin from '@intility/cypress-msal'

let publicClientConfig = {
  auth: {
    clientId: "APP_CLIENT_ID",
    authority: "https://login.microsoftonline.com/TENANT_ID",
  },
};

let requests = [
  {
    scopes: ["User.Read"],
  },
];

let login = generateLogin(publicClientConfig, requests);

export default defineConfig({
  // ...other cypress settings here...
  e2e: {
    setupNodeEvents(on, config) {
      // `on` is used to hook into various events Cypress emits
      on('task', {
        // register a task named login which calls the generated login from @intility/cypress-msal
        login
      })
    }
  }
})

xec avatar Dec 07 '22 10:12 xec

Thanks, tried this but am getting the error below...may be due to the import { defineConfig } from 'cypress' line:

ReferenceError The following error originated from your test code, not from Cypress.

process is not defined

When Cypress detects uncaught errors originating from your test code it will automatically fail the current test.

Cypress could not associate this error to any specific test.

We dynamically generated a new test to display this failure. node_modules/ci-info/index.js:5:1 3 | const vendors = require('./vendors.json') 4 |

5 | const env = process.env | ^ 6 | 7 | // Used for testing only 8 | Object.defineProperty(exports, '_vendors', {

AlphaGeek avatar Dec 07 '22 14:12 AlphaGeek

Hi @AlphaGeek, I merged the updated getting started section, which hopefully resolves your issue 😊

h3rmanj avatar Feb 03 '23 10:02 h3rmanj

still getting the "login is not a function" error in the before()

using latest Cypress version

AlphaGeek avatar Mar 20 '23 19:03 AlphaGeek

still getting the "login is not a function" error in the before()

using latest Cypress version

@AlphaGeek can you share (the important parts of) your config / setup?

xec avatar Mar 22 '23 09:03 xec

cypress.config.ts (does it matter that it is a TS file?) [client_id] is replaced by our QA client id and [tenant] is replaced by our tentant

import { defineConfig } from "cypress"; import generateLogin from "@intility/cypress-msal"

let publicClientConfig = { auth: { clientId: "[client_id]", authority: "https://login.microsoftonline.com/[tenant]", }, };

let requests = [ { scopes: [our_scope], }, ];

let login = generateLogin(publicClientConfig, requests);

export default defineConfig({ e2e: { defaultCommandTimeout: 20000, "retries": { // Configure retry attempts for cypress run // Default is 0 "runMode": 2, // Configure retry attempts for cypress open // Default is 0 "openMode": 2 }, "viewportHeight": 1080, "viewportWidth": 1920, "baseUrl": "https://localhost:5173", //"https://summitqa.blairnet.net" "redirectionLimit": 5, "specPattern": "cypress/e2e/**/*.{js,jsx,ts,tsx,feature}", setupNodeEvents(on, config) { on("task", { // register a task named login which calls the generated login from @intility/cypress-msal login, }); } } });

my cypress test (smokeTest.js):

describe("Ensure site is up and running", () => { /before(() => { cy.exec('npm run get-token') cy.wait(1000) })/ before(() => cy.login());

it("Home page should open", () => { cy.visit("/")
cy.wait(14000) })

it("Should display the WB logo", () => { cy.get('.logo').should('be.visible') })

it("Should have All Active silos", () => { cy.get('.p-carousel-item-active').contains('All Activity') })

it("Should have Trading Desk Commentary silos", () => { cy.get('.p-carousel-item-active').contains('Trading Desk Commentary') })

after(() => { cy.exec('npm run clear-token') }) })

run using "npx cypress open"

currently running 10.11.0 of Cypress but have tried with 12.* and had same issue

AlphaGeek avatar Mar 23 '23 18:03 AlphaGeek

tried using: before(() => cy.task('login')); instead of: before(() => cy.login); and that seemed to help in that I think it found it but then it timed out

AlphaGeek avatar Mar 23 '23 18:03 AlphaGeek

Sorry the late response, we haven't really had time to maintain this package. Just ran into something similar myself; https://github.com/Intility/cypress-msal/issues/5#issuecomment-1824552340

Did you find another solution to your problem?

h3rmanj avatar Nov 23 '23 14:11 h3rmanj