forgejo/web_src/js/webcomponents
Mathieu Fenniak da9bedc967 test: fix failure in relative-time tests in US/Canada DST-aware timezones (#8858)
When running relative-time tests on my local system, the tests fail.

I've verified this failure does occur when the local system time is configured to use these timezones:
- America/Edmonton
- America/Boise
- America/Goose Bay

But the tests pass if the local system time is in these timezones:
- America/Phoenix (has no DST)
- Europe/Berlin (different DST rules)

"7 months ago" (the existing test case output) is accurate considering the offsets used in the test, but internally dayjs calculates it to be 7.99 months when the system TZ is in the "success" TZs, and 8.0001 months in the "failure" TZs.

I believe the source of the difference is that...
- dayjs takes timestamps with offsets, applies the offset, and then treats them as local times...
- Summer Time ended on Oct 27 (the "now" date under test) in Europe, but did not end until November 3rd in the US/Canada...
- In Europe there would have been one hour less between those local timestamps than there would be in US/Canada.

My proposed fix is to perform the diff calculations after converting the timestamps to UTC values.  This provides consistent successful output regardless of the local system TZ.

As the tests are sensitive to system timezone, I've modified the CI build to run the frontend tests twice with two different TZ environment variables.  This is a pretty coarse way to exercise the problem and I'm open to improvements.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8858
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Mathieu Fenniak <mathieu@fenniak.net>
Co-committed-by: Mathieu Fenniak <mathieu@fenniak.net>
2025-08-12 02:47:58 +02:00
..
absolute-date.js [PORT] Fix toAbsoluteLocaleDate and add more tests (gitea#32387) 2024-11-03 15:55:05 +01:00
absolute-date.test.js fix(tests): prevent frontend test dependency on system locale (#6649) 2025-01-22 03:56:36 +00:00
index.js frontend: generic lazy loader for webcomponents (#8510) 2025-07-23 04:10:50 +02:00
lazy-webc.js frontend: generic lazy loader for webcomponents (#8510) 2025-07-23 04:10:50 +02:00
origin-url.js Add <overflow-menu>, rename webcomponents (#29400) 2024-03-20 08:46:29 +01:00
origin-url.test.js [PORT] Fix a number of typescript issues (gitea#32308) 2024-11-04 09:15:06 +01:00
overflow-menu.js Add typescript 2024-10-29 18:15:09 +01:00
pdf-object.js frontend: generic lazy loader for webcomponents (#8510) 2025-07-23 04:10:50 +02:00
README.md Add <overflow-menu>, rename webcomponents (#29400) 2024-03-20 08:46:29 +01:00
relative-time.js test: fix failure in relative-time tests in US/Canada DST-aware timezones (#8858) 2025-08-12 02:47:58 +02:00
relative-time.test.js Make relative-time a self-maintaining custom element (#8134) 2025-06-10 20:12:21 +02:00

Web Components

This webcomponents directory contains the source code for the web components used in the Gitea Web UI.

https://developer.mozilla.org/en-US/docs/Web/Web_Components

Guidelines

  • These components are loaded in <head> (before DOM body) in a separate entry point, they need to be lightweight to not affect the page loading time too much.
  • Do not import svg.js into a web component because that file is currently not tree-shakeable, import svg files individually insteat.
  • All our components must be added to webpack.config.js so they work correctly in Vue.