Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beenotung/playwright-login
Helper function to login and persist session when using playwright
https://github.com/beenotung/playwright-login
login playwright session
Last synced: 3 days ago
JSON representation
Helper function to login and persist session when using playwright
- Host: GitHub
- URL: https://github.com/beenotung/playwright-login
- Owner: beenotung
- License: bsd-2-clause
- Created: 2022-02-01T06:31:44.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2022-10-04T13:32:01.000Z (about 2 years ago)
- Last Synced: 2024-10-11T04:41:13.484Z (25 days ago)
- Topics: login, playwright, session
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/playwright-login
- Size: 11.7 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# playwright-login
Helper function to login and persist session when using playwright
[![npm Package Version](https://img.shields.io/npm/v/playwright-login.svg?maxAge=3600)](https://www.npmjs.com/package/playwright-login)
## Typescript Signature
```typescript
export function restoreLoginContext(options: {
browser: Browser
storageFile: string
url: string // of the home page or login page
waitUntil?: 'load' | 'domcontentloaded' | 'networkidle'
shouldLogin: (page: Page) => Promise
login: (page: Page) => Promise
}): Promise
```## Usage Example
```typescript
let username = process.env.USERNAME!
let password = process.env.PASSWORD!let browser = await chromium.launch()
let page = await restoreLoginContext({
browser,
storageFile: 'browserState.json',
url: 'https://example.net/login',
shouldLogin: (page: Page) =>
page.evaluate(() => !!document.querySelector('#loginform')),
login: async page => {
await page.fill('#loginform [name="username"]', username)
await page.fill('#loginform [name="password"]', password)
await Promise.all([
page.click('#loginform [type="submit"]'),
page.waitForNavigation(),
])
},
})await page.evaluate(() => {
// perform further operations that is only accessible after login
})
```Details refers to [example/demo.ts](./example/demo.ts)
## License
This project is licensed with [BSD-2-Clause](./LICENSE)
This is free, libre, and open-source software. It comes down to four essential freedoms [[ref]](https://seirdy.one/2021/01/27/whatsapp-and-the-domestication-of-users.html#fnref:2):
- The freedom to run the program as you wish, for any purpose
- The freedom to study how the program works, and change it so it does your computing as you wish
- The freedom to redistribute copies so you can help others
- The freedom to distribute copies of your modified versions to others