Skip to content
Snippets Groups Projects
Unverified Commit 7d121861 authored by Abhinav Kumar's avatar Abhinav Kumar Committed by GitHub
Browse files

fix: settings disappear on UI navigation back and forth (#32713)

parent 4ba8c045
No related branches found
No related tags found
No related merge requests found
---
'@rocket.chat/meteor': patch
---
Fixed the disappearance of some settings after navigation under network latency.
......@@ -14,7 +14,7 @@ class PrivateSettingsCachedCollection extends CachedCollection<ISetting> {
async setupListener(): Promise<void> {
sdk.stream('notify-logged', [this.eventName as 'private-settings-changed'], async (t: string, { _id, ...record }: { _id: string }) => {
this.log('record received', t, { _id, ...record });
this.collection.upsert({ _id }, record);
this.collection.update({ _id }, { $set: record }, { upsert: true });
this.sync();
});
}
......
import { Users } from './fixtures/userStates';
import { setSettingValueById } from './utils';
import { test, expect } from './utils/test';
test.use({ storageState: Users.admin.state });
test.describe.serial('settings-persistence-on-ui-navigation', () => {
test.beforeAll(({ api }) => setSettingValueById(api, 'Hide_System_Messages', []));
test.beforeEach(async ({ page }) => {
await page.goto('/admin/settings/Message');
// Intercept the API call and delay its response
await page.route('/api/v1/method.call/saveSettings', async (route) => {
const response = await route.fetch();
await new Promise((resolve) => setTimeout(resolve, 2000)); // Delay the response by 2 seconds
return route.fulfill({
response,
status: response.status(),
headers: response.headers(),
body: await response.body(),
});
});
});
test.afterAll(({ api }) => setSettingValueById(api, 'Hide_System_Messages', []));
test('expect settings to persist in ui when navigating back and forth', async ({ page }) => {
const settingInput = await page.locator('[data-qa-setting-id="Hide_System_Messages"] input');
await settingInput.pressSequentially('User joined');
await settingInput.press('Enter');
await page.locator('button:has-text("Save changes")').click();
await page.locator('button[title="Back"]').click();
await page.waitForResponse((response) => response.url().includes('/api/v1/method.call/saveSettings') && response.status() === 200);
await page.locator('a[href="/admin/settings/Message"] >> text=Open').click();
await expect(page.locator('label[for="Hide_System_Messages"][title="Hide_System_Messages"]')).toBeVisible();
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment