Fix E2E test reporting message for webhook (#29304)
* Fix testcases failing Webpack compilation * Fix E2E test report message for webhook * Demote more unstable tests * Fix playwright reporting message, better test demotion --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
c2c2bc1efe
Коммит
cf5b4610b1
@@ -7,7 +7,6 @@
|
|||||||
// - Use element ID when selecting an element. Create one if none.
|
// - Use element ID when selecting an element. Create one if none.
|
||||||
// ***************************************************************
|
// ***************************************************************
|
||||||
|
|
||||||
// Stage: @prod
|
|
||||||
// Group: @channels @channel
|
// Group: @channels @channel
|
||||||
|
|
||||||
describe('Archived channels', () => {
|
describe('Archived channels', () => {
|
||||||
@@ -24,7 +23,7 @@ describe('Archived channels', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it.skip('MM-T1721 Archive channel posts menu should have copy link and reply options', () => {
|
it('MM-T1721 Archive channel posts menu should have copy link and reply options', () => {
|
||||||
// # Click to add a channel description
|
// # Click to add a channel description
|
||||||
// Note that it is invisible until the mouse hovers it, which is unfeasible in Cypress
|
// Note that it is invisible until the mouse hovers it, which is unfeasible in Cypress
|
||||||
// https://docs.cypress.io/api/commands/hover
|
// https://docs.cypress.io/api/commands/hover
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
// - Use element ID when selecting an element. Create one if none.
|
// - Use element ID when selecting an element. Create one if none.
|
||||||
// ***************************************************************
|
// ***************************************************************
|
||||||
|
|
||||||
// Stage: @prod
|
|
||||||
// Group: @channels @bot_accounts
|
// Group: @channels @bot_accounts
|
||||||
|
|
||||||
import {Bot} from '@mattermost/types/bots';
|
import {Bot} from '@mattermost/types/bots';
|
||||||
@@ -46,7 +45,7 @@ describe('Bot display name', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it.skip('MM-T1813 Display name for bots stays current', () => {
|
it('MM-T1813 Display name for bots stays current', () => {
|
||||||
cy.makeClient({user: otherSysadmin}).then((client) => {
|
cy.makeClient({user: otherSysadmin}).then((client) => {
|
||||||
// # Create a bot and get bot user id
|
// # Create a bot and get bot user id
|
||||||
cy.apiCreateBot().then(({bot}) => {
|
cy.apiCreateBot().then(({bot}) => {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
// - Use element ID when selecting an element. Create one if none.
|
// - Use element ID when selecting an element. Create one if none.
|
||||||
// ***************************************************************
|
// ***************************************************************
|
||||||
|
|
||||||
// Stage: @prod
|
|
||||||
// Group: @channels @collapsed_reply_threads
|
// Group: @channels @collapsed_reply_threads
|
||||||
|
|
||||||
import {Team} from '@mattermost/types/teams';
|
import {Team} from '@mattermost/types/teams';
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
import * as TIMEOUTS from '../../../../../fixtures/timeouts';
|
import * as TIMEOUTS from '../../../../../fixtures/timeouts';
|
||||||
import {getAdminAccount} from '../../../../../support/env';
|
import {getAdminAccount} from '../../../../../support/env';
|
||||||
|
|
||||||
import {promoteToChannelOrTeamAdmin} from '../channel_moderation/helpers.js';
|
import {promoteToChannelOrTeamAdmin} from '../channel_moderation/helpers.ts';
|
||||||
|
|
||||||
describe('System console', () => {
|
describe('System console', () => {
|
||||||
const sysadmin = getAdminAccount();
|
const sysadmin = getAdminAccount();
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ describe('Desktop notifications', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('MM-T495 Desktop Notifications - Can set to DND and no notification fires on DM', () => {
|
it.skip('MM-T495 Desktop Notifications - Can set to DND and no notification fires on DM', () => {
|
||||||
cy.apiCreateDirectChannel([otherUser.id, testUser.id]).then(({channel}) => {
|
cy.apiCreateDirectChannel([otherUser.id, testUser.id]).then(({channel}) => {
|
||||||
// # Ensure notifications are set up to fire a desktop notification if you receive a DM
|
// # Ensure notifications are set up to fire a desktop notification if you receive a DM
|
||||||
cy.apiPatchUser(testUser.id, {notify_props: {...testUser.notify_props, desktop: 'all'}});
|
cy.apiPatchUser(testUser.id, {notify_props: {...testUser.notify_props, desktop: 'all'}});
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
promoteToChannelOrTeamAdmin,
|
promoteToChannelOrTeamAdmin,
|
||||||
} from '../enterprise/system_console/channel_moderation/helpers.js';
|
} from '../enterprise/system_console/channel_moderation/helpers.ts';
|
||||||
|
|
||||||
describe('Manage Members', () => {
|
describe('Manage Members', () => {
|
||||||
let testTeam;
|
let testTeam;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
// Use element ID when selecting an element. Create one if none.
|
// Use element ID when selecting an element. Create one if none.
|
||||||
// ***************************************************************
|
// ***************************************************************
|
||||||
|
|
||||||
// Stage: @prod
|
|
||||||
// Group: @channels @toast
|
// Group: @channels @toast
|
||||||
|
|
||||||
import {getRandomId} from '../../../utils';
|
import {getRandomId} from '../../../utils';
|
||||||
|
|||||||
@@ -3,8 +3,10 @@
|
|||||||
|
|
||||||
const RESULTS_DIR = 'results';
|
const RESULTS_DIR = 'results';
|
||||||
const MOCHAWESOME_REPORT_DIR = 'results/mochawesome-report';
|
const MOCHAWESOME_REPORT_DIR = 'results/mochawesome-report';
|
||||||
|
const AD_CYCLE_FILE = 'results/ad_cycle.json';
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
MOCHAWESOME_REPORT_DIR,
|
MOCHAWESOME_REPORT_DIR,
|
||||||
RESULTS_DIR,
|
RESULTS_DIR,
|
||||||
|
AD_CYCLE_FILE,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ const dayjs = require('dayjs');
|
|||||||
const duration = require('dayjs/plugin/duration');
|
const duration = require('dayjs/plugin/duration');
|
||||||
dayjs.extend(duration);
|
dayjs.extend(duration);
|
||||||
|
|
||||||
const {MOCHAWESOME_REPORT_DIR} = require('./constants');
|
const {MOCHAWESOME_REPORT_DIR, AD_CYCLE_FILE} = require('./constants');
|
||||||
|
|
||||||
const MAX_FAILED_TITLES = 5;
|
const MAX_FAILED_TITLES = 5;
|
||||||
|
|
||||||
@@ -76,6 +76,16 @@ function generateShortSummary(report) {
|
|||||||
const failedFullTitles = tests.filter((t) => t.fail).map((t) => t.fullTitle);
|
const failedFullTitles = tests.filter((t) => t.fail).map((t) => t.fullTitle);
|
||||||
const statsFieldValue = generateStatsFieldValue(stats, failedFullTitles);
|
const statsFieldValue = generateStatsFieldValue(stats, failedFullTitles);
|
||||||
|
|
||||||
|
// If AD Cycle file is found, we have data from the Automation Dashboard available
|
||||||
|
// We are able to override the run stats with enriched information
|
||||||
|
const adCycle = readJsonFromFile(AD_CYCLE_FILE);
|
||||||
|
if (!(adCycle instanceof Error)) {
|
||||||
|
stats.passes = adCycle.pass;
|
||||||
|
stats.failures = adCycle.fail;
|
||||||
|
stats.tests = adCycle.pass + adCycle.fail;
|
||||||
|
stats.passPercent = 100 * (stats.passes / stats.tests);
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
stats,
|
stats,
|
||||||
statsFieldValue,
|
statsFieldValue,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ const summaryFile = 'results/summary.json';
|
|||||||
const results = JSON.parse(fs.readFileSync(resultsFile, 'utf8'));
|
const results = JSON.parse(fs.readFileSync(resultsFile, 'utf8'));
|
||||||
const summary = JSON.parse(fs.readFileSync(summaryFile, 'utf8'));
|
const summary = JSON.parse(fs.readFileSync(summaryFile, 'utf8'));
|
||||||
const passRate = summary.passed / (summary.passed + summary.failed);
|
const passRate = summary.passed / (summary.passed + summary.failed);
|
||||||
const totalSpecs = summary.passed + summary.failed + summary.failed_expected;
|
const totalSpecs = summary.passed + summary.failed;
|
||||||
const playwrightVersion = results.config.version;
|
const playwrightVersion = results.config.version;
|
||||||
const playwrightDuration = dayjs.duration(results.stats.duration, 'seconds').format('HH:mm:ss');
|
const playwrightDuration = dayjs.duration(results.stats.duration, 'seconds').format('HH:mm:ss');
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {test} from '@e2e-support/test_fixture';
|
|||||||
import {ChannelsPage, ScheduledDraftPage} from '@e2e-support/ui/pages';
|
import {ChannelsPage, ScheduledDraftPage} from '@e2e-support/ui/pages';
|
||||||
import {duration, wait} from '@e2e-support/util';
|
import {duration, wait} from '@e2e-support/util';
|
||||||
|
|
||||||
test('MM-T5643_1 should create a scheduled message from a channel', async ({pw, pages}) => {
|
test.fixme('MM-T5643_1 should create a scheduled message from a channel', async ({pw, pages}) => {
|
||||||
test.setTimeout(120000);
|
test.setTimeout(120000);
|
||||||
|
|
||||||
const draftMessage = 'Scheduled Draft';
|
const draftMessage = 'Scheduled Draft';
|
||||||
@@ -38,7 +38,7 @@ test('MM-T5643_1 should create a scheduled message from a channel', async ({pw,
|
|||||||
await verifyNoscheduledDraftsPending(channelPage, team, scheduledDraftPage, draftMessage);
|
await verifyNoscheduledDraftsPending(channelPage, team, scheduledDraftPage, draftMessage);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('MM-T5643_6 should create a scheduled message under a thread post ', async ({pw, pages}) => {
|
test.fixme('MM-T5643_6 should create a scheduled message under a thread post ', async ({pw, pages}) => {
|
||||||
test.setTimeout(120000);
|
test.setTimeout(120000);
|
||||||
|
|
||||||
const draftMessage = 'Scheduled Threaded Message';
|
const draftMessage = 'Scheduled Threaded Message';
|
||||||
@@ -113,7 +113,7 @@ test('MM-T5643_6 should create a scheduled message under a thread post ', async
|
|||||||
await verifyNoscheduledDraftsPending(channelPage, team, scheduledDraftPage, draftMessage);
|
await verifyNoscheduledDraftsPending(channelPage, team, scheduledDraftPage, draftMessage);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('MM-T5644 should rechedule a scheduled message', async ({pw, pages}) => {
|
test.fixme('MM-T5644 should rechedule a scheduled message', async ({pw, pages}) => {
|
||||||
const draftMessage = 'Scheduled Draft';
|
const draftMessage = 'Scheduled Draft';
|
||||||
await pw.skipIfNoLicense();
|
await pw.skipIfNoLicense();
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ test('MM-T5644 should rechedule a scheduled message', async ({pw, pages}) => {
|
|||||||
await compareMessageTimestamps(rescheduledDraftChannelInfo, scheduledDraftPageInfo, scheduledDraftPage);
|
await compareMessageTimestamps(rescheduledDraftChannelInfo, scheduledDraftPageInfo, scheduledDraftPage);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('MM-T5645 should delete a scheduled message', async ({pw, pages}) => {
|
test.fixme('MM-T5645 should delete a scheduled message', async ({pw, pages}) => {
|
||||||
const draftMessage = 'Scheduled Draft';
|
const draftMessage = 'Scheduled Draft';
|
||||||
await pw.skipIfNoLicense();
|
await pw.skipIfNoLicense();
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ test('MM-T5645 should delete a scheduled message', async ({pw, pages}) => {
|
|||||||
await expect(scheduledDraftPage.noscheduledDraftIcon).toBeVisible();
|
await expect(scheduledDraftPage.noscheduledDraftIcon).toBeVisible();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('MM-T5643_9 should send a scheduled message immediately', async ({pw, pages}) => {
|
test.fixme('MM-T5643_9 should send a scheduled message immediately', async ({pw, pages}) => {
|
||||||
const draftMessage = 'Scheduled Draft';
|
const draftMessage = 'Scheduled Draft';
|
||||||
await pw.skipIfNoLicense();
|
await pw.skipIfNoLicense();
|
||||||
|
|
||||||
@@ -193,7 +193,7 @@ test('MM-T5643_9 should send a scheduled message immediately', async ({pw, pages
|
|||||||
await expect(await channelPage.getLastPost()).toHaveText(draftMessage);
|
await expect(await channelPage.getLastPost()).toHaveText(draftMessage);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('MM-T5643_3 should create a scheduled message from a DM', async ({pw, pages}) => {
|
test.fixme('MM-T5643_3 should create a scheduled message from a DM', async ({pw, pages}) => {
|
||||||
test.setTimeout(120000);
|
test.setTimeout(120000);
|
||||||
|
|
||||||
const draftMessage = 'Scheduled Draft';
|
const draftMessage = 'Scheduled Draft';
|
||||||
@@ -265,7 +265,7 @@ test('MM-T5648 should create a draft and then schedule it', async ({pw, pages})
|
|||||||
await scheduledDraftPage.assertscheduledDraftBody(draftMessage);
|
await scheduledDraftPage.assertscheduledDraftBody(draftMessage);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('MM-T5644 should edit scheduled message', async ({pw, pages}) => {
|
test.fixme('MM-T5644 should edit scheduled message', async ({pw, pages}) => {
|
||||||
test.setTimeout(120000);
|
test.setTimeout(120000);
|
||||||
|
|
||||||
const draftMessage = 'Scheduled Draft';
|
const draftMessage = 'Scheduled Draft';
|
||||||
@@ -303,7 +303,7 @@ test('MM-T5644 should edit scheduled message', async ({pw, pages}) => {
|
|||||||
await verifyNoscheduledDraftsPending(channelPage, team, scheduledDraftPage, draftMessage);
|
await verifyNoscheduledDraftsPending(channelPage, team, scheduledDraftPage, draftMessage);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('MM-T5650 should copy scheduled message', async ({pw, pages, browserName}) => {
|
test.fixme('MM-T5650 should copy scheduled message', async ({pw, pages, browserName}) => {
|
||||||
test.setTimeout(120000);
|
test.setTimeout(120000);
|
||||||
|
|
||||||
// Skip this test in Firefox clipboard permissions are not supported
|
// Skip this test in Firefox clipboard permissions are not supported
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user