forgejo/tests/e2e/login.test.e2e.ts
Gusted 4c641b0fb2 feat: improve incorrect ROOT_URL warning (#7103)
- In the case that the `ROOT_URL` does not match the site a person is visiting Forgejo gives zero guarantees that any of the functionality will still work.
- Make the error i18n, use `local_next`.
- Reflect in the error that the any part of the application can break, don't be specific - it is plain wrong and should not be used.
- Always check for this case on the login page. This was previously only the case if OAuth2 was enabled, but this code was checking for elements that are always present on the login page regardless if the OAuth2 was enabled or not. Technically nothing changed, but reading the code it is now more clear when this check is being run.
- Add E2E testing.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7103
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-03-03 18:05:01 +00:00

33 lines
1.2 KiB
TypeScript

// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
// @watch start
// templates/user/auth/**
// web_src/js/features/user-**
// web_src/js/features/common-global.js
// @watch end
import {expect} from '@playwright/test';
import {test, save_visual, test_context} from './utils_e2e.ts';
test('Mismatched ROOT_URL', async ({browser}) => {
const context = await test_context(browser);
const page = await context.newPage();
// Ugly hack to override the appUrl of `window.config`.
await page.addInitScript(() => {
setInterval(() => {
if (window.config) {
window.config.appUrl = 'https://example.com';
}
}, 1);
});
const response = await page.goto('/user/login');
expect(response?.status()).toBe(200);
await save_visual(page);
const globalError = page.locator('.js-global-error');
await expect(globalError).toContainText('This Forgejo instance is configured to be served on ');
await expect(globalError).toContainText('You are currently viewing Forgejo through a different URL, which may cause parts of the application to break. The canonical URL is controlled by Forgejo admins via the ROOT_URL setting in the app.ini.');
});