Chore: Refactor create-target-channel util (#26493)

pull/26291/merge
souzaramon 4 years ago committed by GitHub
parent 0f6f3e0403
commit d164c06df3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      apps/meteor/tests/e2e/channel-management.spec.ts
  2. 4
      apps/meteor/tests/e2e/emojis.spec.ts
  3. 4
      apps/meteor/tests/e2e/file-upload.spec.ts
  4. 4
      apps/meteor/tests/e2e/message-actions.spec.ts
  5. 4
      apps/meteor/tests/e2e/messaging.spec.ts
  6. 168
      apps/meteor/tests/e2e/permissions.spec.ts
  7. 10
      apps/meteor/tests/e2e/utils/create-target-channel.ts
  8. 43
      apps/meteor/tests/e2e/utils/test.ts

@ -8,8 +8,8 @@ test.describe.serial('channel-management', () => {
let poHomeChannel: HomeChannel;
let targetChannel: string;
test.beforeAll(async ({ browser }) => {
targetChannel = await createTargetChannel(browser);
test.beforeAll(async ({ api }) => {
targetChannel = await createTargetChannel(api);
});
test.beforeEach(async ({ page }) => {

@ -8,8 +8,8 @@ test.describe.serial('emoji', () => {
let poHomeChannel: HomeChannel;
let targetChannel: string;
test.beforeAll(async ({ browser }) => {
targetChannel = await createTargetChannel(browser);
test.beforeAll(async ({ api }) => {
targetChannel = await createTargetChannel(api);
});
test.beforeEach(async ({ page }) => {

@ -8,8 +8,8 @@ test.describe.serial('file-upload', () => {
let poHomeChannel: HomeChannel;
let targetChannel: string;
test.beforeAll(async ({ browser }) => {
targetChannel = await createTargetChannel(browser);
test.beforeAll(async ({ api }) => {
targetChannel = await createTargetChannel(api);
});
test.beforeEach(async ({ page }) => {

@ -8,8 +8,8 @@ test.describe.serial('message-actions', () => {
let poHomeChannel: HomeChannel;
let targetChannel: string;
test.beforeAll(async ({ browser }) => {
targetChannel = await createTargetChannel(browser);
test.beforeAll(async ({ api }) => {
targetChannel = await createTargetChannel(api);
});
test.beforeEach(async ({ page }) => {

@ -18,8 +18,8 @@ test.describe.serial('Messaging', () => {
let poHomeChannel: HomeChannel;
let targetChannel: string;
test.beforeAll(async ({ browser }) => {
targetChannel = await createTargetChannel(browser);
test.beforeAll(async ({ api }) => {
targetChannel = await createTargetChannel(api);
});
test.beforeEach(async ({ page }) => {

@ -1,5 +1,4 @@
import { test, expect } from './utils/test';
import { BASE_API_URL, ADMIN_CREDENTIALS } from './config/constants';
import { HomeChannel } from './page-objects';
import { createTargetChannel } from './utils';
@ -7,18 +6,10 @@ test.use({ storageState: 'user2-session.json' });
test.describe.serial('permissions', () => {
let poHomeChannel: HomeChannel;
let apiSessionHeaders: { 'X-Auth-Token': string; 'X-User-Id': string };
let targetChannel: string;
test.beforeAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/login`, { data: ADMIN_CREDENTIALS });
const { userId, authToken } = (await response.json()).data;
apiSessionHeaders = { 'X-Auth-Token': authToken, 'X-User-Id': userId };
});
test.beforeAll(async ({ browser }) => {
targetChannel = await createTargetChannel(browser);
test.beforeAll(async ({ api }) => {
targetChannel = await createTargetChannel(api);
});
test.beforeEach(async ({ page }) => {
@ -28,13 +19,10 @@ test.describe.serial('permissions', () => {
});
test.describe.serial('Edit message', () => {
test.beforeAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowEditing`, {
headers: apiSessionHeaders,
data: { value: false },
});
test.beforeAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowEditing', { value: false })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
test('expect option(edit) not be visible', async () => {
@ -45,24 +33,18 @@ test.describe.serial('permissions', () => {
await expect(poHomeChannel.content.btnOptionEditMessage).toBeHidden();
});
test.afterAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowEditing`, {
headers: apiSessionHeaders,
data: { value: true },
});
test.afterAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowEditing', { value: true })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
});
test.describe.serial('Delete message', () => {
test.beforeAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowDeleting`, {
headers: apiSessionHeaders,
data: { value: false },
});
test.beforeAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowDeleting', { value: false })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
test('expect option(delete) not be visible', async () => {
@ -73,26 +55,20 @@ test.describe.serial('permissions', () => {
await expect(poHomeChannel.content.btnOptionDeleteMessage).toBeHidden();
});
test.afterAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowDeleting`, {
headers: apiSessionHeaders,
data: { value: true },
});
test.afterAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowDeleting', { value: true })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
});
test.describe.serial('Pin message', () => {
test.use({ storageState: 'admin-session.json' });
test.beforeAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowPinning`, {
headers: apiSessionHeaders,
data: { value: false },
});
test.beforeAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowPinning', { value: false })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
test('expect option(pin) not be visible', async () => {
@ -103,26 +79,20 @@ test.describe.serial('permissions', () => {
await expect(poHomeChannel.content.btnOptionPinMessage).toBeHidden();
});
test.afterAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowPinning`, {
headers: apiSessionHeaders,
data: { value: true },
});
test.afterAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowPinning', { value: true })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
});
// FIXME: Wrong behavior in Rocket.chat, currently it shows the button
// and after a click a "not allowed" alert pops up
test.describe.skip('Star message', () => {
test.beforeAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowStarring`, {
headers: apiSessionHeaders,
data: { value: false },
});
test.beforeAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowStarring', { value: false })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
test('expect option(star) not be visible', async () => {
@ -133,24 +103,18 @@ test.describe.serial('permissions', () => {
await expect(poHomeChannel.content.btnOptionStarMessage).toBeHidden();
});
test.afterAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowStarring`, {
headers: apiSessionHeaders,
data: { value: true },
});
test.afterAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowStarring', { value: true })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
});
test.describe.serial('Upload file', () => {
test.beforeAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/FileUpload_Enabled`, {
headers: apiSessionHeaders,
data: { value: false },
});
test.beforeAll(async ({ api }) => {
const statusCode = (await api.post('/settings/FileUpload_Enabled', { value: false })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
test('expect option(upload file) not be visible', async () => {
@ -160,24 +124,18 @@ test.describe.serial('permissions', () => {
await expect(poHomeChannel.content.btnOptionFileUpload).toBeHidden();
});
test.afterAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/FileUpload_Enabled`, {
headers: apiSessionHeaders,
data: { value: true },
});
test.afterAll(async ({ api }) => {
const statusCode = (await api.post('/settings/FileUpload_Enabled', { value: true })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
});
test.describe.serial('Upload audio', () => {
test.beforeAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AudioRecorderEnabled`, {
headers: apiSessionHeaders,
data: { value: false },
});
test.beforeAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AudioRecorderEnabled', { value: false })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
test('expect option(upload audio) not be visible', async () => {
@ -187,24 +145,18 @@ test.describe.serial('permissions', () => {
await expect(poHomeChannel.content.btnRecordAudio).toBeHidden();
});
test.afterAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AudioRecorderEnabled`, {
headers: apiSessionHeaders,
data: { value: true },
});
test.afterAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AudioRecorderEnabled', { value: true })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
});
test.describe.serial('Upload video', () => {
test.beforeAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_VideoRecorderEnabled`, {
headers: apiSessionHeaders,
data: { value: false },
});
test.beforeAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_VideoRecorderEnabled', { value: false })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
test('expect option(upload video) not be visible', async () => {
@ -214,31 +166,20 @@ test.describe.serial('permissions', () => {
await expect(poHomeChannel.content.btnVideoMessage).toBeHidden();
});
test.afterAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_VideoRecorderEnabled`, {
headers: apiSessionHeaders,
data: { value: true },
});
test.afterAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_VideoRecorderEnabled', { value: true })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
});
// FIXME:
test.describe.skip('Filter words', () => {
test.beforeAll(async ({ request }) => {
const response1 = await request.post(`${BASE_API_URL}/settings/Message_AllowBadWordsFilter`, {
headers: apiSessionHeaders,
data: { value: false },
});
const response2 = await request.post(`${BASE_API_URL}/settings/Message_BadWordsFilterList`, {
headers: apiSessionHeaders,
data: { value: 'badword' },
});
expect(response1.status()).toBe(200);
expect(response2.status()).toBe(200);
test.beforeAll(async ({ api }) => {
const statusCode1 = (await api.post('/settings/Message_AllowBadWordsFilter', { value: true })).status();
const statusCode2 = (await api.post('/settings/Message_BadWordsFilterList', { value: 'badword' })).status();
expect(statusCode1).toBe(200);
expect(statusCode2).toBe(200);
});
test('expect badword be censored', async () => {
@ -248,13 +189,10 @@ test.describe.serial('permissions', () => {
await expect(poHomeChannel.content.lastUserMessage).toContainText('*'.repeat(7));
});
test.afterAll(async ({ request }) => {
const response = await request.post(`${BASE_API_URL}/settings/Message_AllowBadWordsFilter`, {
headers: apiSessionHeaders,
data: { value: true },
});
test.afterAll(async ({ api }) => {
const statusCode = (await api.post('/settings/Message_AllowBadWordsFilter', { value: false })).status();
expect(response.status()).toBe(200);
expect(statusCode).toBe(200);
});
});
});

@ -1,19 +1,15 @@
import { Browser } from '@playwright/test';
import faker from '@faker-js/faker';
import { HomeChannel } from '../page-objects/home-channel';
import { BaseTest } from './test';
/**
* createTargetChannel:
* - Usefull to create a target channel for message related tests
*/
export async function createTargetChannel(browser: Browser): Promise<string> {
const page = await browser.newPage({ storageState: 'admin-session.json' });
export async function createTargetChannel(api: BaseTest['api']): Promise<string> {
const name = faker.datatype.uuid();
await page.goto('/home');
await new HomeChannel(page).sidenav.createPublicChannel(name);
await page.close();
await api.post('/channels.create', { name });
return name;
}

@ -2,11 +2,25 @@ import * as fs from 'fs';
import * as path from 'path';
import { v4 as uuid } from 'uuid';
import { test as baseTest } from '@playwright/test';
import { APIResponse, test as baseTest } from '@playwright/test';
import { BASE_API_URL, ADMIN_CREDENTIALS } from '../config/constants';
const PATH_NYC_OUTPUT = path.join(process.cwd(), '.nyc_output');
export type AnyObj = { [key: string]: any };
export type BaseTest = {
api: {
get(uri: string): Promise<APIResponse>;
post(uri: string, data: AnyObj): Promise<APIResponse>;
put(uri: string, data: AnyObj): Promise<APIResponse>;
delete(uri: string): Promise<APIResponse>;
};
};
// @ts-ignore
export const test = baseTest.extend({
export const test = baseTest.extend<BaseTest>({
context: async ({ context }, use) => {
if (!process.env.E2E_COVERAGE) {
await use(context);
@ -36,6 +50,31 @@ export const test = baseTest.extend({
}),
);
},
api: async ({ request }, use) => {
const resp = await request.post(`${BASE_API_URL}/login`, { data: ADMIN_CREDENTIALS });
const json = await resp.json();
const headers = {
'X-Auth-Token': json.data.authToken,
'X-User-Id': json.data.userId,
};
await use({
get(uri: string) {
return request.get(BASE_API_URL + uri, { headers });
},
post(uri: string, data: AnyObj) {
return request.post(BASE_API_URL + uri, { headers, data });
},
put(uri: string, data: AnyObj) {
return request.put(BASE_API_URL + uri, { headers, data });
},
delete(uri: string) {
return request.delete(BASE_API_URL + uri, { headers });
},
});
},
});
export const { expect } = test;

Loading…
Cancel
Save