// 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}, workerInfo) => {
  test.skip(['Mobile Safari', 'webkit'].includes(workerInfo.project.name), 'init script gets randomly ignored');
  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.');
});
