111 lines
4.9 KiB
JavaScript
111 lines
4.9 KiB
JavaScript
const { MultiUsers } = require('../user/multiusers');
|
|
const e = require('../core/elements');
|
|
const { sleep } = require('../core/helpers');
|
|
const { expect, test } = require('@playwright/test');
|
|
const { openPrivateChat } = require('./util');
|
|
const { getSettings } = require('../core/settings');
|
|
|
|
class PrivateChat extends MultiUsers {
|
|
constructor(browser, context) {
|
|
super(browser, context);
|
|
}
|
|
|
|
async sendPrivateMessage() {
|
|
await openPrivateChat(this.modPage);
|
|
await this.modPage.waitForSelector(e.hidePrivateChat);
|
|
await sleep(500); // prevent a race condition when running on a deployed server
|
|
// modPage send message
|
|
await this.modPage.type(e.chatBox, e.message1);
|
|
await this.modPage.waitAndClick(e.sendButton);
|
|
await this.userPage.waitUntilHaveCountSelector(e.chatButton, 2);
|
|
await this.userPage.waitAndClickElement(e.chatButton, 1);
|
|
await this.userPage.waitForSelector(e.hidePrivateChat);
|
|
// check sent messages
|
|
await this.modPage.hasText(e.chatUserMessageText, e.message1);
|
|
await this.userPage.hasText(e.chatUserMessageText, e.message1);
|
|
// userPage send message
|
|
await this.userPage.type(e.chatBox, e.message2);
|
|
await this.userPage.waitAndClick(e.sendButton);
|
|
// check sent messages
|
|
await this.modPage.hasText(e.privateChat, e.message2);
|
|
await this.userPage.hasText(e.privateChat, e.message2);
|
|
}
|
|
|
|
async closeChat() {
|
|
await openPrivateChat(this.modPage);
|
|
await this.modPage.waitUntilHaveCountSelector(e.chatButton, 2);
|
|
const privateChatLocator = this.modPage.getLocatorByIndex(e.chatButton, -1);
|
|
expect(privateChatLocator).toContainText(this.userPage.username);
|
|
|
|
await this.modPage.type(e.chatBox, e.message1);
|
|
await this.modPage.waitAndClick(e.sendButton);
|
|
await this.userPage.waitUntilHaveCountSelector(e.chatButton, 2);
|
|
await this.modPage.waitAndClick(e.closePrivateChat);
|
|
await this.modPage.wasRemoved(e.hidePrivateChat);
|
|
await this.modPage.waitUntilHaveCountSelector(e.chatButton, 1);
|
|
const userChatCount = await this.userPage.getSelectorCount(e.chatButton);
|
|
expect(userChatCount).toBe(2);
|
|
}
|
|
|
|
async chatDisabledUserLeaves() {
|
|
await openPrivateChat(this.modPage);
|
|
await this.modPage.waitForSelector(e.sendButton);
|
|
await this.userPage.waitAndClick(e.optionsButton);
|
|
await this.userPage.waitAndClick(e.logout);
|
|
await this.modPage.hasElementDisabled(e.chatBox);
|
|
await this.modPage.hasElementDisabled(e.sendButton);
|
|
}
|
|
// Emojis
|
|
async emojiSendPrivateChat() {
|
|
const { emojiPickerEnabled } = getSettings();
|
|
test.fail(!emojiPickerEnabled, 'Emoji Picker is disabled');
|
|
|
|
await openPrivateChat(this.modPage);
|
|
await this.modPage.waitForSelector(e.hidePrivateChat);
|
|
await sleep(500); // prevent a race condition when running on a deployed server
|
|
// modPage send message
|
|
await this.modPage.waitAndClick(e.emojiPickerButton);
|
|
await this.modPage.waitAndClick(e.emojiSent);
|
|
await this.modPage.waitAndClick(e.sendButton);
|
|
await this.userPage.waitUntilHaveCountSelector(e.chatButton, 2);
|
|
await this.userPage.waitAndClickElement(e.chatButton, 1);
|
|
await this.userPage.waitForSelector(e.hidePrivateChat);
|
|
// check sent messages
|
|
await this.modPage.hasText(e.chatUserMessageText, e.frequentlyUsedEmoji);
|
|
await this.userPage.hasText(e.chatUserMessageText, e.frequentlyUsedEmoji);
|
|
// userPage send message
|
|
await this.userPage.waitAndClick(e.emojiPickerButton);
|
|
await this.userPage.waitAndClick(e.emojiSent);
|
|
await this.userPage.waitAndClick(e.sendButton);
|
|
// check sent messages
|
|
await this.modPage.hasText(e.privateChat, e.frequentlyUsedEmoji);
|
|
await this.userPage.hasText(e.privateChat, e.frequentlyUsedEmoji);
|
|
}
|
|
|
|
async autoConvertEmojiSendPrivateChat() {
|
|
const { autoConvertEmojiEnabled } = getSettings();
|
|
test.fail(!autoConvertEmojiEnabled, 'Auto Convert Emoji is disabled');
|
|
|
|
await openPrivateChat(this.modPage);
|
|
await this.modPage.waitForSelector(e.hidePrivateChat);
|
|
await sleep(500); // prevent a race condition when running on a deployed server
|
|
// modPage send message
|
|
await this.modPage.type(e.chatBox, e.autoConvertEmojiMessage);
|
|
await this.modPage.waitAndClick(e.sendButton);
|
|
await this.userPage.waitUntilHaveCountSelector(e.chatButton, 2);
|
|
await this.userPage.waitAndClickElement(e.chatButton, 1);
|
|
await this.userPage.waitForSelector(e.hidePrivateChat);
|
|
// check sent messages
|
|
await this.modPage.hasText(e.chatUserMessageText, e.convertedEmojiMessage);
|
|
await this.userPage.hasText(e.chatUserMessageText, e.convertedEmojiMessage);
|
|
// userPage send message
|
|
await this.userPage.type(e.chatBox, e.autoConvertEmojiMessage);
|
|
await this.userPage.waitAndClick(e.sendButton);
|
|
// check sent messages
|
|
await this.modPage.hasText(e.privateChat, e.convertedEmojiMessage);
|
|
await this.userPage.hasText(e.privateChat, e.convertedEmojiMessage);
|
|
}
|
|
}
|
|
|
|
exports.PrivateChat = PrivateChat;
|