snapshot of https://github.com/mattermost/mattermost.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Server CI / Postgres (shard 0) (push) Has been skipped
Server CI / Postgres (shard 3) (push) Has been skipped
BuildEnv Docker Image / build-image (push) Failing after 4s
BuildEnv Docker Image / build-image-fips (push) Failing after 4s
Migration Review & Release Notes / Generate migration review & release notes (push) Failing after 3s
Server CI / Build Environment (push) Failing after 3s
Server CI / Postgres (shard 1) (push) Has been skipped
Tools CI / check-style (mattermost-govet) (push) Failing after 4s
Server CI / Postgres (shard 2) (push) Has been skipped
Tools CI / check-style (mmgotool) (push) Failing after 3s
Server CI / Elasticsearch v8 Compatibility (push) Has been skipped
Server CI / OpenSearch v2 Compatibility (push) Has been skipped
Server CI / Postgres FIPS (shard 0) (push) Has been skipped
Tools CI / Test (mattermost-govet) (push) Failing after 3s
Server CI / Postgres FIPS (shard 1) (push) Has been skipped
Server CI / Postgres FIPS (shard 2) (push) Has been skipped
Tools CI / Test (mmgotool) (push) Failing after 3s
Server CI / Postgres FIPS (shard 3) (push) Has been skipped
Server CI / Run mmctl tests (push) Has been skipped
Server CI / Run mmctl tests (FIPS) (push) Has been skipped
Server CI / Merge Postgres Test Results (push) Has been skipped
Server CI / Merge Postgres FIPS Test Results (push) Has been skipped
Server CI / Check backport migrations (push) Has been skipped
Server CI / Check generated files (push) Has been skipped
Server CI / check-style (push) Has been skipped
Server CI / Vet API (push) Has been skipped
Server CI / Build mattermost server app (push) Has been skipped
Server CI / Server CI Complete (push) Failing after 2s
Server CI / Server CI Artifacts (push) Has been skipped
Server CI / Sentry Upload (push) Has been skipped
Server CI / Server CI Report (push) Failing after 5m1s
Server CI Nightly Race / Race Detector (push) Has been skipped
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Webapp CI Cache Warm / Warm Webapp node_modules Cache (push) Has been cancelled
E2E CI Cache Warm / Warm E2E npm Registry Cache (push) Has been cancelled
API / build (push) Has been cancelled
Web App CI / check-types (push) Has been cancelled
Web App CI / check-lint (push) Has been cancelled
Web App CI / check-i18n (push) Has been cancelled
Web App CI / check-external-links (push) Has been cancelled
Web App CI / test (platform) (push) Has been cancelled
Web App CI / test (mattermost-redux) (push) Has been cancelled
Web App CI / test (channels shard 1/4) (push) Has been cancelled
Web App CI / test (channels shard 2/4) (push) Has been cancelled
Web App CI / test (channels shard 3/4) (push) Has been cancelled
Web App CI / test (channels shard 4/4) (push) Has been cancelled
Web App CI / upload-coverage (push) Has been cancelled
Web App CI / build (push) Has been cancelled
YAML Lint / yamllint (push) Has been cancelled
Push mirrored docker images / cd/Push mirrored docker images (push) Has been cancelled
docs-cd / Build and deploy docs (push) Has been cancelled
Docs CI / build (push) Has been cancelled
E2E Cache Warm: Cypress deps / Warm Cypress deps cache (push) Has been cancelled
Scorecards supply-chain security / Scorecard analysis (push) Has been cancelled
Server CI Weekly / Postgres FIPS (push) Has been skipped
Server CI Weekly / Run mmctl tests (FIPS) (push) Has been skipped
Server CI Weekly / Postgres with binary parameters (push) Has been skipped
Server CI Weekly / Build Environment (push) Failing after 1s
Server CI Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
Server CI Nightly Race / Build Environment (push) Failing after 1s

This commit is contained in:
upstream-mirror
2026-09-16 00:29:55 +05:00
commit 240db4e2a7
15309 changed files with 2173406 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// ***************************************************************
// - [#] indicates a test step (e.g. # Go to a page)
// - [*] indicates an assertion (e.g. * Check the title)
// - Use element ID when selecting an element. Create one if none.
// ***************************************************************
// Stage: @prod
// Group: @channels @system_console @not_cloud
import * as TIMEOUTS from '@/fixtures/timeouts';
describe('System Console > Server Logs', () => {
before(() => {
cy.shouldNotRunOnCloudEdition();
// # Visit the system console.
cy.visit('/admin_console');
// # Go to the Server Logs section.
cy.get('#reporting\\/server_logs').click().wait(TIMEOUTS.TWO_SEC);
});
it('MM-T908 Logs - Verify content categories', () => {
// * Verify the banner is showed.
cy.get('.banner__content span').should('not.empty');
// * Verify reload button is showed.
cy.get('.admin-logs-content button span').should('be.visible').and('contain', 'Reload');
// * Verify that server logs are showed correctly.
cy.get('.admin-logs-content div.LogTable').should('be.visible').and('not.empty');
cy.get('.admin-logs-content div.LogTable span').eq(0).should('not.empty');
});
});

View File

@@ -0,0 +1,79 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// ***************************************************************
// - [#] indicates a test step (e.g. # Go to a page)
// - [*] indicates an assertion (e.g. * Check the title)
// - Use element ID when selecting an element. Create one if none.
// ***************************************************************
// Stage: @prod
// Group: @channels @system_console @not_cloud
import * as TIMEOUTS from '@/fixtures/timeouts';
describe('System Console > Site Statistics', () => {
let testUser;
before(() => {
cy.shouldNotRunOnCloudEdition();
cy.apiInitSetup({loginAfter: true}).then(({user, offTopicUrl}) => {
// # Login as test user and visit off-topic
testUser = user;
cy.visit(offTopicUrl);
// # Post a message as testUser to make them daily/monthly active
cy.postMessage('New Daily Message');
});
});
it('MM-T903 - Site Statistics > Deactivating a user increments the Daily and Monthly Active Users counts down', () => {
let totalActiveUsersInitial;
let dailyActiveUsersInitial;
let monthlyActiveUsersInitial;
let totalActiveUsersFinal;
let dailyActiveUsersFinal;
let monthlyActiveUsersFinal;
// # Go to admin console
cy.apiAdminLogin();
cy.visit('/admin_console');
// # Go to system analytics
cy.findByTestId('reporting.system_analytics', {timeout: TIMEOUTS.ONE_MIN}).click();
cy.wait(TIMEOUTS.ONE_SEC);
// # Get the number text and turn them into numbers
cy.findByTestId('totalActiveUsers').invoke('text').then((totalActiveText) => {
totalActiveUsersInitial = parseInt(totalActiveText, 10);
});
cy.findByTestId('dailyActiveUsers').invoke('text').then((dailyActiveText) => {
dailyActiveUsersInitial = parseInt(dailyActiveText, 10);
});
cy.findByTestId('monthlyActiveUsers').invoke('text').then((monthlyActiveText) => {
monthlyActiveUsersInitial = parseInt(monthlyActiveText, 10);
// # Deactivate user and reload page and then wait 2 seconds
cy.externalActivateUser(testUser.id, false);
cy.reload();
cy.wait(TIMEOUTS.TWO_SEC);
});
// # Get the numbers required again
cy.findByTestId('totalActiveUsers').invoke('text').then((totalActiveFinalText) => {
totalActiveUsersFinal = parseInt(totalActiveFinalText, 10);
});
cy.findByTestId('dailyActiveUsers').invoke('text').then((dailyActiveFinalText) => {
dailyActiveUsersFinal = parseInt(dailyActiveFinalText, 10);
});
cy.findByTestId('monthlyActiveUsers').invoke('text').then((monthlyActiveFinalText) => {
monthlyActiveUsersFinal = parseInt(monthlyActiveFinalText, 10);
// * Assert that the final number is the initial number minus one
expect(totalActiveUsersFinal).equal(totalActiveUsersInitial - 1);
expect(dailyActiveUsersFinal).equal(dailyActiveUsersInitial - 1);
expect(monthlyActiveUsersFinal).equal(monthlyActiveUsersInitial - 1);
});
});
});

View File

@@ -0,0 +1,46 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// ***************************************************************
// - [#] indicates a test step (e.g. # Go to a page)
// - [*] indicates an assertion (e.g. * Check the title)
// - Use element ID when selecting an element. Create one if none.
// ***************************************************************
// Stage: @prod
// Group: @channels @te_only @system_console
import * as TIMEOUTS from '@/fixtures/timeouts';
describe('System Console > Site Statistics', () => {
before(() => {
cy.shouldRunOnTeamEdition();
});
it('MM-T3804 Site Statistics displays expected content categories', () => {
// # Visit site statistics page.
cy.visit('/admin_console/reporting/system_analytics');
// * Check that the header has loaded correctly and contains the expected text.
cy.get('.admin-console__header span', {timeout: TIMEOUTS.ONE_MIN}).should('be.visible').should('contain', 'System Statistics');
// * Check that the rows for the table were generated.
cy.get('.admin-console__content .row').should('have.length', 4);
// * Check that the title content for the stats is as expected.
cy.get('.admin-console__content .row').eq(0).find('.title').eq(0).should('contain', 'Total Active Users');
cy.get('.admin-console__content .row').eq(0).find('.title').eq(1).should('contain', 'Total Teams');
cy.get('.admin-console__content .row').eq(0).find('.title').eq(2).should('contain', 'Total Channels');
cy.get('.admin-console__content .row').eq(0).find('.title').eq(3).should('contain', 'Total Posts');
cy.get('.admin-console__content .row').eq(0).find('.title').eq(4).should('contain', 'Daily Active Users');
cy.get('.admin-console__content .row').eq(0).find('.title').eq(5).should('contain', 'Monthly Active Users');
// * Check that the values for the stats are valid.
cy.get('.admin-console__content .row').eq(0).find('.content').each((el) => {
cy.waitUntil(() => cy.wrap(el).then((content) => {
return content[0].innerText !== 'Loading...';
}));
cy.wrap(el).eq(0).invoke('text').then(parseFloat).should('be.gt', 0);
});
});
});

View File

@@ -0,0 +1,83 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// ***************************************************************
// - [#] indicates a test step (e.g. # Go to a page)
// - [*] indicates an assertion (e.g. * Check the title)
// - Use element ID when selecting an element. Create one if none.
// ***************************************************************
// Stage: @prod
// Group: @channels @system_console
import * as TIMEOUTS from '@/fixtures/timeouts';
describe('System Console > Team Statistics', () => {
before(() => {
// # Create team.
cy.apiCreateTeam('mmt906-team', 'mmt906-team').then(({team}) => {
// # Create private channel.
cy.apiCreateChannel(team.id, 'mmt906-ch', 'mmt906-ch', 'P');
cy.dbRefreshPostStats().then(() => {
// # Visit team statistics page.
cy.visit('/admin_console/reporting/team_statistics');
// # Select created team.
cy.get('select.team-statistics__team-filter__dropdown').select(team.id);
// # Explicit wait to allow stats to get loaded
cy.wait(TIMEOUTS.TWO_SEC);
});
});
});
it('MM-T906 Team Statistics displays expected content categories', () => {
// * Check that the header has loaded correctly and contains the expected text.
cy.get('.team-statistics__header span').should('be.visible').should('contain', 'Team Statistics for');
// * Check that the rows for the table were generated.
cy.get('.grid-statistics__card').should('have.length', 4);
// * Check that the title content for the stats is as expected.
cy.get('.admin-console__content').eq(0).find('.title').eq(0).should('contain', 'Total Activated Users');
cy.get('.admin-console__content').eq(0).find('.title').eq(1).should('contain', 'Public Channels');
cy.get('.admin-console__content').eq(0).find('.title').eq(2).should('contain', 'Private Channels');
cy.get('.admin-console__content').eq(0).find('.title').eq(3).should('contain', 'Total Posts');
cy.get('.total-count.by-day').eq(0).find('.title').should('contain', 'Total Posts');
cy.get('.total-count.by-day').eq(1).find('.title').should('contain', 'Active Users With Posts');
cy.get('.total-count.recent-active-users').eq(0).find('.title').should('contain', 'Recent Active Users');
cy.get('.total-count.recent-active-users').eq(1).find('.title').should('contain', 'Newly Created Users');
// * Check that the values for the stats are valid.
cy.get('.grid-statistics__card').each((el) => {
cy.wrap(el).find('.content').invoke('text').then(parseFloat).should('be.gt', 0);
});
// * Check that the generated tables are not empty.
cy.get('.recent-active-users').find('table').eq(0).should('not.empty');
cy.get('.recent-active-users').find('table').eq(1).should('not.empty');
});
it('MM-T907 - Reporting ➜ Team Statistics - teams listed in alphabetical order', () => {
cy.visit('/admin_console');
cy.get('#reporting\\/team_statistics').click();
cy.wait(TIMEOUTS.ONE_SEC);
// * Verify Teams are listed in alphabetical order, regardless of who created the team
cy.findByTestId('teamFilter').then((el) => {
// # Get the options and append them to a unsorted array (assume unsorted)
const unsortedOptionsText = [];
el[0].childNodes.forEach((child) => unsortedOptionsText.push(child.innerText));
// # Make a copy of the above array and then we sort them
const sortedOptionsText = [...unsortedOptionsText].sort((a, b) => a.localeCompare(b, undefined, {sensitivity: 'base'}));
// * Compare the unsorted array and sorted array and if it initially was sorted, these should match
for (let i = 0; i < unsortedOptionsText.length; i++) {
expect(unsortedOptionsText[i]).equal(sortedOptionsText[i]);
}
});
});
});