Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/intility/cypress-msal
- Owner: Intility
- License: mit
- Created: 2022-03-03T15:51:44.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-20T07:29:11.000Z (about 1 year ago)
- Last Synced: 2024-09-21T19:51:12.998Z (3 months ago)
- Topics: azure-ad, cypress, e2e, msal, msal-browser, testing
- Language: TypeScript
- Homepage:
- Size: 305 KB
- Stars: 17
- Watchers: 6
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
@intility/cypress-msal
A cypress plugin for projects using @azure/msal-browser.## 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`.