mirror of
https://github.com/hanzoai/team.git
synced 2026-11-01 07:55:31 +00:00
* AutoTranslate config settings
* comment out Agents provider
* Add auto translate timeout config validation
* i18n messages for autotranslation config validation
* fix test
* validate url for libreTranslate
* Feedback review
* Admin Console UI for Auto-Translation
* fix admin console conditional section display
* i18n
* removed unintentional change
* update admin.general.localization.autoTranslateProviderDescription newline
* fix lint
* Fix types
* UX feedback review
* fix typo in i18n
* Fix AutoTranslation feature flag
* feedback review
* Fix test default values
* feedback review
* re-add isHidden property to feature discovery
* Database Migrations, Indexes and Methods for Auto-Translation
* i18n
* fix retrylayer and storetest
* Fix search query
* fix lint
* remove the request.CTX and modify Translation model
* fix lint and external url
* Add settings to playwright
* Add empty as a valid value for the Provider
* Update jsonb queries
* Fix queries and add model methods
* fix go lint
* go lint fix 2
* fix db migrations
* feedback review + store cache
* increase migration number
* cleanup autotranslation store cache
* use NULL as objectType for posts
* fix bad merge
* fix tests
* add missing i18n
* Active WebSocket Connection User Tracking
* copilot feedback and fix styles
* remove duplicate calls
* remove early return to mitigate timing attacks
* Switch prop bags column to boolean
* fix lint
* fix tests
* Remove database search
* use Builder methods
* review feedback
* AutoTranslation interface with Core Translation Logic
* update timeouts to use short/medium/long translations
* external exports
* add configured languages to autotranslations
* added post prop for detected language
* fix bugs for storing translation and call translation service
* clean up interface
* add translations to GetPost repsonses and in the create post response
* use metadata for translation information and add new column for state of a translation
* change websocket event name
* change metadata to a map
* single in memory queue in the cluster leader
* remove unused definition
* Revert "remove unused definition"
This reverts commit 8634f53bef.
* remove webhub changes
* remove last webhub bit
* tidy up interface
* Frontend integration
* tidy up
* fix api response for translations
* Add Agents provider for auto translations (#34706)
* Add LLM backed autotranslation support
* Remove AU changes
* Remove orphaned tests for deleted GetActiveUserIDsForChannel
The GetActiveUserIDsForChannel function was removed from PlatformService
as part of the autotranslations refactoring, but its tests were left behind
causing linter/vet errors. This removes the orphaned test code:
- BenchmarkGetActiveUserIDsForChannel
- TestGetActiveUserIDsForChannel
- waitForActiveConnections helper
* Add missing i18n translations and fix linter errors
- Add 17 missing translation strings for autotranslation feature
- Fix shadow variable declarations in post.go and autotranslation.go
- Remove unused autoQueueMaxAge constant
- Remove unused setupWithFastIteration test function
- Use slices.Contains instead of manual loop
- Use maps.Copy instead of manual loop
- Remove empty if branch
* Fix tests
* Fixes for PR review
* add files
* Update webapp/channels/src/components/admin_console/localization/localization.scss
Co-authored-by: Matthew Birtch <[email protected]>
* fixes
* Fixes
* Didn't save
* Add a translation
* Fix translations
* Fix shadow err
---------
Co-authored-by: Matthew Birtch <[email protected]>
* tidy up code for review
* add support for editing posts
* i18n-extract
* i18n
* Rename show translations and add util to get message
* Fix get posts, migrations, websockets and configuration styles
* Fix CI
* i18n-extract
* Fix webapp tests
* Address UX feedback
* i18n-extract
* Fix lint
* updated shimmer animation, fixed issue with the width on compact icon buttons
* fix migrations
* fix markdown masking for bold, italics and strikethrough
* Address feedback
* Add missing changes
* Fix and add tests
* Fix circular dependencies
* lint
* lint
* lint and i18n
* Fix lint
* Fix i18n
* Minor changes
* Add check for whether the channel is translated or not for this user
* Fix lint and add missing change
* Fix lint
* Fix test
* Remove uneeded console log
* Fix duplicated code
* Fix small screen show translation modal
* Remove interactions on show translation modal
* Disable auto translation when the language is not supported
* Fix typo
* Fix copy text
* Fix updating autotranslation for normal users
* Fix autotranslate button showing when it shouldn't
* Fix styles
* Fix test
* Fix frontend member related changes
* Revert post improvements and remove duplicated code from bad merge
* Address feedback
* Fix test and i18n
* Fix e2e tests
* Revert lingering change from post improvements
* Fix lint
---------
Co-authored-by: Elias Nahum <[email protected]>
Co-authored-by: BenCookie95 <[email protected]>
Co-authored-by: Nick Misasi <[email protected]>
Co-authored-by: Matthew Birtch <[email protected]>
Co-authored-by: Mattermost Build <[email protected]>
Co-authored-by: Hanzo Dev <[email protected]>
163 lines
7.1 KiB
TypeScript
163 lines
7.1 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {expect, test} from '@mattermost/playwright-lib';
|
|
|
|
test.fixme('Base channel accessibility', async ({pw, axe}) => {
|
|
// # Create and sign in a new user
|
|
const {user} = await pw.initSetup();
|
|
|
|
// # Log in a user in new browser context
|
|
const {page, channelsPage} = await pw.testBrowser.login(user);
|
|
|
|
// # Visit a default channel page
|
|
await channelsPage.goto();
|
|
await channelsPage.toBeVisible();
|
|
await channelsPage.postMessage('hello');
|
|
|
|
// # Analyze the page
|
|
// Disable 'color-contrast' to be addressed by MM-53814
|
|
const accessibilityScanResults = await axe.builder(page, {disableColorContrast: true}).analyze();
|
|
|
|
// * Should have no violation
|
|
expect(accessibilityScanResults.violations).toHaveLength(0);
|
|
});
|
|
|
|
test('Post actions tab support', async ({pw, axe}) => {
|
|
// # Create and sign in a new user
|
|
const {user, adminClient} = await pw.initSetup();
|
|
const config = await adminClient.getConfig();
|
|
const license = await adminClient.getClientLicenseOld();
|
|
|
|
// # Log in a user in new browser context
|
|
const {page, channelsPage} = await pw.testBrowser.login(user);
|
|
|
|
// # Visit a default channel page
|
|
await channelsPage.goto();
|
|
await channelsPage.toBeVisible();
|
|
await channelsPage.postMessage('hello');
|
|
|
|
const post = await channelsPage.getLastPost();
|
|
await post.hover();
|
|
await post.postMenu.toBeVisible();
|
|
|
|
// # Open the dot menu
|
|
await post.postMenu.dotMenuButton.press('Enter');
|
|
|
|
// * Dot menu should be visible and have focused
|
|
await channelsPage.postDotMenu.toBeVisible();
|
|
await expect(channelsPage.postDotMenu.replyMenuItem).toBeFocused();
|
|
|
|
// # Analyze the page
|
|
const accessibilityScanResults = await axe
|
|
.builder(page, {disableColorContrast: true})
|
|
.include('.MuiList-root.MuiList-padding')
|
|
.analyze();
|
|
|
|
// * Should have no violation
|
|
expect(accessibilityScanResults.violations).toHaveLength(0);
|
|
|
|
// * Should move focus to Forward after arrow down
|
|
await channelsPage.postDotMenu.replyMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.forwardMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Follow message after arrow down
|
|
await channelsPage.postDotMenu.forwardMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.followMessageMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Mark as Unread after arrow down
|
|
await channelsPage.postDotMenu.followMessageMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.markAsUnreadMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Save after arrow down
|
|
await channelsPage.postDotMenu.markAsUnreadMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.saveMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Remind after arrow down
|
|
await channelsPage.postDotMenu.saveMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.remindMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Pin to Channel after arrow down
|
|
await channelsPage.postDotMenu.remindMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.pinToChannelMenuItem).toBeFocused();
|
|
|
|
if (config.FeatureFlags['MoveThreadsEnabled'] && license.IsLicensed === 'true') {
|
|
// * Should move focus to Move Thread after arrow down
|
|
await channelsPage.postDotMenu.pinToChannelMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.moveThreadMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Copy Text after arrow down
|
|
await channelsPage.postDotMenu.moveThreadMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.copyTextMenuItem).toBeFocused();
|
|
} else {
|
|
// * Should move focus to Copy Text after arrow down
|
|
await channelsPage.postDotMenu.pinToChannelMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.copyTextMenuItem).toBeFocused();
|
|
}
|
|
|
|
// * Should move focus to Copy Link after arrow down
|
|
await channelsPage.postDotMenu.copyTextMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.copyLinkMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Edit after arrow down
|
|
await channelsPage.postDotMenu.copyLinkMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.editMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Delete after arrow down
|
|
await channelsPage.postDotMenu.editMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.deleteMenuItem).toBeFocused();
|
|
|
|
// * Then, should move focus back to Reply after arrow down
|
|
await channelsPage.postDotMenu.deleteMenuItem.press('ArrowDown');
|
|
await expect(channelsPage.postDotMenu.replyMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Delete after arrow uo
|
|
await channelsPage.postDotMenu.container.press('ArrowUp');
|
|
expect(await channelsPage.postDotMenu.deleteMenuItem).toBeFocused();
|
|
|
|
// # Set focus to Remind
|
|
await channelsPage.postDotMenu.remindMenuItem.focus();
|
|
await expect(channelsPage.postDotMenu.remindMenuItem).toBeFocused();
|
|
|
|
// * Reminder menu should still be hidden
|
|
await expect(channelsPage.postReminderMenu.container).toBeHidden();
|
|
|
|
// # Press arrow right
|
|
await channelsPage.postDotMenu.remindMenuItem.press('ArrowRight');
|
|
|
|
// * Reminder menu should be visible
|
|
expect(channelsPage.postReminderMenu.container).toBeVisible();
|
|
|
|
// * Should have focus on 30 mins after submenu opens
|
|
expect(await channelsPage.postReminderMenu.thirtyMinsMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to 1 hour after arrow down
|
|
await channelsPage.postReminderMenu.thirtyMinsMenuItem.press('ArrowDown');
|
|
expect(await channelsPage.postReminderMenu.oneHourMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to 2 hours after arrow down
|
|
await channelsPage.postReminderMenu.oneHourMenuItem.press('ArrowDown');
|
|
expect(await channelsPage.postReminderMenu.twoHoursMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Tomorrow after arrow down
|
|
await channelsPage.postReminderMenu.twoHoursMenuItem.press('ArrowDown');
|
|
expect(await channelsPage.postReminderMenu.tomorrowMenuItem).toBeFocused();
|
|
|
|
// * Should move focus to Custom after arrow down
|
|
await channelsPage.postReminderMenu.tomorrowMenuItem.press('ArrowDown');
|
|
expect(await channelsPage.postReminderMenu.customMenuItem).toBeFocused();
|
|
|
|
// * Then, should move focus back to 30 mins after arrow down
|
|
await channelsPage.postReminderMenu.customMenuItem.press('ArrowDown');
|
|
expect(await channelsPage.postReminderMenu.thirtyMinsMenuItem).toBeFocused();
|
|
|
|
// * Should hide Reminder menu and focus to Remind menu after arrow left
|
|
await channelsPage.postReminderMenu.container.press('ArrowLeft');
|
|
await expect(channelsPage.postReminderMenu.container).toBeHidden();
|
|
await expect(channelsPage.postDotMenu.remindMenuItem).toBeFocused();
|
|
|
|
// * Should hide Dot menu of Escape
|
|
await channelsPage.postDotMenu.container.press('Escape');
|
|
await expect(channelsPage.postDotMenu.container).toBeHidden();
|
|
});
|