Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/intility/cypress-msal

A cypress plugin for projects using @azure/msal-browser.
https://github.com/intility/cypress-msal

azure-ad cypress e2e msal msal-browser testing

Last synced: about 2 months ago
JSON representation

A cypress plugin for projects using @azure/msal-browser.

Awesome Lists containing this project

README

        




@intility/cypress-msal


A cypress plugin for projects using @azure/msal-browser.



pipeline


package version

## Installation

```
npm install @intility/cypress-msal
```

## Usage

Register the package in `cypress/support/e2e.js`:

```js
import "@intility/cypress-msal/command";
```

Configure the login command, and add it as a task in `cypress.config.js`:

```js
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,
});
}
}
})
```

You can now login by using the `login` command before running your tests.

```js
before(() => cy.login());
```

## Azure Configuration

The App registration needs to be a Public Application to be able to use the Device Code flow.

## `generateLogin`

### Syntax

```js
let login = generateLogin(publicClientConfiguration, requests);
```

### Parameters

#### `publicClientConfiguration`

A [`Configuration`](https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_node.html#configuration) that will be used to initialize a [`PublicClientApplication`](https://azuread.github.io/microsoft-authentication-library-for-js/ref/classes/_azure_msal_node.publicclientapplication.html) from `@azure/msal-node`.

#### `requests`

An array of Requests (`{ scopes: string[] }`) that will be used for [`acquireTokenByDeviceCode`](https://azuread.github.io/microsoft-authentication-library-for-js/ref/classes/_azure_msal_node.publicclientapplication.html#acquiretokenbydevicecode) and [`acquireTokenSilent`](https://azuread.github.io/microsoft-authentication-library-for-js/ref/classes/_azure_msal_node.publicclientapplication.html#acquiretokensilent).

### Return value

A task plugin named `login` that should be registered with `on("task", { login })`.

## `cy.login`

### Syntax

`cy.login()`

### Return value

A Promise that get resolves when all tokens are acquired and registered in `sessionStorage` to be used by `@azure/msal-browser`.