Socket
Book a DemoInstallSign in
Socket

@mattermost/playwright-lib

Package Overview
Dependencies
Maintainers
13
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mattermost/playwright-lib

A comprehensive end-to-end testing library for Mattermost web, desktop and plugin applications using Playwright

10.7.0
latest
Source
npmnpm
Version published
Weekly downloads
0
Maintainers
13
Weekly downloads
 
Created
Source

@mattermost/playwright-lib

A comprehensive end-to-end testing library for Mattermost web, desktop and plugin applications using Playwright.

Overview

This library provides:

  • Pre-built page objects and components for common Mattermost UI elements
  • Server configuration and initialization utilities
  • Test fixtures and helpers
  • Visual testing support with Percy integration
  • Accessibility testing support with axe-core
  • Browser notification mocking
  • File handling utilities
  • Common test actions and assertions

Installation

npm install @mattermost/playwright-lib

Usage

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);
});

Key Components

Page Objects

Ready-to-use page objects for common Mattermost pages:

  • Login
  • Signup
  • Channels
  • System Console
  • And more...

UI Components

Reusable component objects for UI elements:

  • Headers
  • Posts
  • Menus
  • Modals
  • And more...

Test Utilities

Helper functions for common testing needs:

  • Server setup and configuration
  • User/team creation
  • File handling
  • Visual testing
  • And more...

Configuration

The library can be configured via optional environment variables:

Environment Variables

All environment variables are optional with sensible defaults.

Server Configuration

VariableDescriptionDefault
PW_BASE_URLServer URLhttp://localhost:8065
PW_ADMIN_USERNAMEAdmin usernamesysadmin
PW_ADMIN_PASSWORDAdmin passwordSys@dmin-sample1
PW_ADMIN_EMAILAdmin emailsysadmin@sample.mattermost.com
PW_ENSURE_PLUGINS_INSTALLEDComma-separated list of plugins to install[]
PW_RESET_BEFORE_TESTReset server before testfalse

High Availability Cluster Settings

VariableDescriptionDefault
PW_HA_CLUSTER_ENABLEDEnable HA clusterfalse
PW_HA_CLUSTER_NODE_COUNTNumber of cluster nodes2
PW_HA_CLUSTER_NAMECluster namemm_dev_cluster

Push Notifications

VariableDescriptionDefault
PW_PUSH_NOTIFICATION_SERVERPush notification server URLhttps://push-test.mattermost.com

Playwright Settings

VariableDescriptionDefault
PW_HEADLESSRun tests headlesstrue
PW_SLOWMOAdd delay between actions in ms0
PW_WORKERSNumber of parallel workers1

Visual Testing

VariableDescriptionDefault
PW_SNAPSHOT_ENABLEEnable snapshot testingfalse
PW_PERCY_ENABLEEnable Percy visual testingfalse

CI Settings

VariableDescriptionDefault
CISet automatically in CI environmentsN/A

Accessibility Testing

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:

  • Runs WCAG 2.0 Level A & AA rules by default
  • Provides detailed violation reports
  • Supports rule customization
  • Can be configured per-test or globally

Visual Testing

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});
});

Browser Notifications

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);
});

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

See LICENSE.txt for license information.

Keywords

mattermost

FAQs

Package last updated on 07 Apr 2025

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.