
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
@mattermost/playwright-lib
Advanced tools
A comprehensive end-to-end testing library for Mattermost web, desktop and plugin applications using Playwright
A comprehensive end-to-end testing library for Mattermost web, desktop and plugin applications using Playwright.
This library provides:
npm install @mattermost/playwright-lib
Basic example of logging in and posting a message:
import {test, expect} from '@mattermost/playwright-lib';
test('user can post message', async ({pw}) => {
// # Create and login a new user
const {user} = await pw.initSetup();
const {channelsPage} = await pw.testBrowser.login(user);
// # Navigate and post a message
await channelsPage.goto();
const message = 'Hello World!';
await channelsPage.postMessage(message);
// * Verify message appears
const lastPost = await channelsPage.getLastPost();
await expect(lastPost).toHaveText(message);
});
Ready-to-use page objects for common Mattermost pages:
Reusable component objects for UI elements:
Helper functions for common testing needs:
The library can be configured via optional environment variables:
All environment variables are optional with sensible defaults.
Variable | Description | Default |
---|---|---|
PW_BASE_URL | Server URL | http://localhost:8065 |
PW_ADMIN_USERNAME | Admin username | sysadmin |
PW_ADMIN_PASSWORD | Admin password | Sys@dmin-sample1 |
PW_ADMIN_EMAIL | Admin email | sysadmin@sample.mattermost.com |
PW_ENSURE_PLUGINS_INSTALLED | Comma-separated list of plugins to install | [] |
PW_RESET_BEFORE_TEST | Reset server before test | false |
Variable | Description | Default |
---|---|---|
PW_HA_CLUSTER_ENABLED | Enable HA cluster | false |
PW_HA_CLUSTER_NODE_COUNT | Number of cluster nodes | 2 |
PW_HA_CLUSTER_NAME | Cluster name | mm_dev_cluster |
Variable | Description | Default |
---|---|---|
PW_PUSH_NOTIFICATION_SERVER | Push notification server URL | https://push-test.mattermost.com |
Variable | Description | Default |
---|---|---|
PW_HEADLESS | Run tests headless | true |
PW_SLOWMO | Add delay between actions in ms | 0 |
PW_WORKERS | Number of parallel workers | 1 |
Variable | Description | Default |
---|---|---|
PW_SNAPSHOT_ENABLE | Enable snapshot testing | false |
PW_PERCY_ENABLE | Enable Percy visual testing | false |
Variable | Description | Default |
---|---|---|
CI | Set automatically in CI environments | N/A |
The library includes built-in accessibility testing using axe-core:
import {test, expect} from '@mattermost/playwright-lib';
test('verify login page accessibility', async ({page, axe}) => {
// # Navigate to login page
await page.goto('/login');
// # Run accessibility scan
const results = await axe.builder(page).analyze();
// * Verify no accessibility violations
expect(results.violations).toHaveLength(0);
});
The axe-core integration:
The library supports visual testing through Playwright's built-in visual comparisons and Percy integration:
import {test, expect} from '@mattermost/playwright-lib';
test('verify channel header appearance', async ({pw, browserName, viewport}, testInfo) => {
// # Setup and login
const {user} = await pw.initSetup();
const {page, channelsPage} = await pw.testBrowser.login(user);
// # Navigate and prepare page
await channelsPage.goto();
await expect(channelsPage.appBar.playbooksIcon).toBeVisible();
await pw.hideDynamicChannelsContent(page);
// * Take and verify snapshot
await pw.matchSnapshot(testInfo, {page, browserName, viewport});
});
Mock and verify browser notifications:
import {test, expect} from '@mattermost/playwright-lib';
test('verify notification on mention', async ({pw}) => {
// # Setup users and team
const {team, adminUser, user} = await pw.initSetup();
// # Setup admin browser with notifications
const {page: adminPage, channelsPage: adminChannelsPage} = await pw.testBrowser.login(adminUser);
await adminChannelsPage.goto(team.name, 'town-square');
await pw.stubNotification(adminPage, 'granted');
// # Setup user browser and post mention
const {channelsPage: userChannelsPage} = await pw.testBrowser.login(user);
await userChannelsPage.goto(team.name, 'off-topic');
await userChannelsPage.postMessage(`@ALL good morning, ${team.name}!`);
// * Verify notification received
const notifications = await pw.waitForNotification(adminPage);
expect(notifications.length).toBe(1);
});
See CONTRIBUTING.md for development setup and guidelines.
See LICENSE.txt for license information.
FAQs
A comprehensive end-to-end testing library for Mattermost web, desktop and plugin applications using Playwright
The npm package @mattermost/playwright-lib receives a total of 0 weekly downloads. As such, @mattermost/playwright-lib popularity was classified as not popular.
We found that @mattermost/playwright-lib demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 13 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.