mirror of
https://github.com/mattermost/mattermost.git
synced 2026-05-28 04:35:04 -04:00
47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {test as setup} from '@mattermost/playwright-lib';
|
|
|
|
setup('ensure plugins are loaded', async ({pw}) => {
|
|
// Ensure all products as plugin are installed and active.
|
|
await pw.ensurePluginsLoaded();
|
|
});
|
|
|
|
setup('ensure server deployment', async ({pw}) => {
|
|
// Ensure server is on expected deployment type.
|
|
await pw.ensureServerDeployment();
|
|
});
|
|
|
|
setup('ensure ABAC is configured', async ({pw}) => {
|
|
// Enable ABAC and the Department attribute once for the entire test run.
|
|
// Individual tests call pw.skipIfNoLicense() and handle the unlicensed case themselves.
|
|
// Use getAdminClient (not initSetup) to avoid calling updateConfig(defaultConfig)
|
|
// which resets the entire server config and broadcasts via WebSocket to all open
|
|
// browser sessions across the 13 parallel shards starting simultaneously.
|
|
const {adminClient} = await pw.getAdminClient();
|
|
|
|
try {
|
|
await adminClient.patchConfig({
|
|
AccessControlSettings: {
|
|
EnableAttributeBasedAccessControl: true,
|
|
EnableUserManagedAttributes: true,
|
|
},
|
|
} as any);
|
|
} catch {
|
|
// Server is not licensed for ABAC — individual tests will skip via pw.skipIfNoLicense()
|
|
}
|
|
|
|
try {
|
|
const fields = await adminClient.getCustomProfileAttributeFields();
|
|
if (!fields.some((f: any) => f.name === 'Department')) {
|
|
await adminClient.createCustomProfileAttributeField({
|
|
name: 'Department',
|
|
type: 'text',
|
|
attrs: {sort_order: 0},
|
|
} as any);
|
|
}
|
|
} catch {
|
|
// Attribute creation failed — ABAC tests will handle their own attribute setup
|
|
}
|
|
});
|