-
Notifications
You must be signed in to change notification settings - Fork 10.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: settings disappear on UI navigation back and forth (#32713)
- Loading branch information
1 parent
4ba8c04
commit 7d12186
Showing
3 changed files
with
48 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
'@rocket.chat/meteor': patch | ||
--- | ||
|
||
Fixed the disappearance of some settings after navigation under network latency. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
apps/meteor/tests/e2e/settings-persistence-on-ui-navigation.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
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(); | ||
}); | ||
}); |