UoE/Version 8.2#2
Merged
dspeed2 merged 77 commits intoMay 6, 2026
Merged
Conversation
Test changing of the home page title
… button when last item is removed
…emove CI-FIX-README - Restore build.yml to base (Node [18.x, 20.x], e2e/SSR/Docker, --code-coverage) - Only build.yml change: --browsers=ChromeHeadlessCI for CI stability - Revert themed-copyright/organised selectors to ds-themed-* with eslint-disable - Remove CI-FIX-README.md - Restore package.json to base (--code-coverage intact) - Keep karma.conf.js ChromeHeadlessCI launcher + timeout settings
Revert ChromeHeadlessCI launcher and timeout overrides in karma.conf.js. Revert build.yml test command to base (yarn run test:headless). CI uses NODE_OPTIONS='--max-old-space-size=4096' from env which is sufficient.
DataShare fork has significantly more code/tests than upstream DSpace. The upstream 4096MB is insufficient — only ~2500 of 5000+ tests compile with 4GB heap due to webpack bundle size. Increase to 8192MB to ensure all tests compile and code coverage processing completes.
Coverage data collection from Chrome takes longer than the default 30s timeout on large projects. Set to 600s (10 min) to allow full coverage data transfer for 5000+ test files.
…ble-dev-shm-usage Root cause: With --code-coverage, Chrome crashes mid-execution due to /dev/shm exhaustion on CI runners. Standard CI fix: --disable-dev-shm-usage routes shared memory to /tmp instead. Changes: - karma.conf.js: Add ChromeHeadlessCI launcher with --no-sandbox and --disable-dev-shm-usage; keep browserNoActivityTimeout for coverage data - package.json: Use ChromeHeadlessCI in test:headless - build.yml: Revert NODE_OPTIONS to upstream 4096 (4GB sufficient on Linux CI)
Chrome's default V8 heap (~1.5GB) is insufficient for the coverage- instrumented test bundle — Chrome crashes after ~60% of tests. Adding --js-flags=--max-old-space-size=4096 gives Chrome enough heap for the full test suite with code coverage.
With the DataShare fork having ~25% more test code than upstream, Chrome needs more V8 heap for coverage-instrumented execution. Linux overcommit allows 8GB allocation on 7GB runner — only actively used pages need physical memory.
With coverage instrumentation, total memory (Node ~4GB + Chrome ~3GB) exceeds the default GitHub Actions runner's 7GB RAM. Adding 4GB swap provides enough headroom for both processes during code coverage test execution.
Combine 8GB Node heap with 4GB swap for reliable code coverage tests. Use dd fallback if fallocate fails. Print free -h for debugging.
Source maps double the coverage-instrumented bundle size, causing Chrome to crash after ~60% of tests. Disabling source maps in CI (they're not needed for automated testing) reduces the bundle enough for Chrome to handle the full test suite. Also revert NODE_OPTIONS to upstream 4096 and remove swap step (swap didn't help — issue was bundle size, not system memory).
Using npx ng test directly instead of yarn run test:headless to avoid the possibility of --source-map=false being ignored when appended to the npm script's --source-map=true.
…-group, remove axe diagnostic
…pt POST for collection-create timing
…ix codecov fail_ci_if_error
- Restore ds-themed-about selector with eslint-disable (review point 7) - Restore model.context.label in form Add buttons (review point 12) - Restore signal-based one-section-at-a-time accordion (review point 14) - Update Cypress submission tests for one-at-a-time accordion behavior - Preserve a11y improvements (aria-labels, aria-hidden)
model.context might be undefined for default DSpace form array models that don't set context.label. Use optional chaining (?.) to prevent runtime crash, with fallback to form.add translation.
UoE/Fix github action issues
UoR/Removed CoreTrustSeal cert from footer
…8_x' into uoe/item-issue-metadata-value-is-lost # Conflicts: # src/app/datashare/datashare-submission.service.spec.ts Co-authored-by: milanmajchrak <90026355+milanmajchrak@users.noreply.github.com>
UoE/fix: preserve metadata form values when toggling submission sections
Co-authored-by: milanmajchrak <90026355+milanmajchrak@users.noreply.github.com>
…ore' UoE/fix: prevent multi-value form fields from losing input and 'Add more'
…ream-embargo-info
UoE/feat: show embargo badge on embargoed bitstreams in file section
…and Store provider in file-download-link spec Also sorts imports via eslint --fix and adds a short PR7 fix README.
… satisfy aria-required-children
UoE/fix: Github actions - it2
There was a problem hiding this comment.
Pull request overview
Updates the DataShare (UoE) theme and core UI to improve accessibility, add bitstream access-status/embargo badge support, and stabilize CI/e2e testing for DSpace 8.2.
Changes:
- Add/configure access-status handling for bitstreams (model, badge rendering, file download link integration, config toggles).
- Improve accessibility semantics and labels across submission forms and edit metadata UI.
- Update CI/test tooling (Karma headless launcher, CodeQL v3, Cypress test stabilization) and assorted formatting/i18n cleanups.
Reviewed changes
Copilot reviewed 92 out of 96 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/themes/datashare/lazy-theme.module.ts | Reorders/moves DataShare imports |
| src/themes/datashare/assets/i18n/en.json5 | Formatting/i18n key cleanup |
| src/themes/datashare/app/submission/form/submission-upload-files/submission-upload-files.component.ts | Import ordering cleanup |
| src/themes/datashare/app/submission/edit/submission-edit.component.ts | Formatting + trailing commas |
| src/themes/datashare/app/shared/search/search-results/search-results.component.ts | Comment whitespace cleanup |
| src/themes/datashare/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.ts | Enable theme badge stylesheet |
| src/themes/datashare/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.scss | Re-export core badge styles |
| src/themes/datashare/app/shared/file-download-link/file-download-link.component.ts | Import badge wrapper for template use |
| src/themes/datashare/app/navbar/navbar.component.ts | Import ordering cleanup |
| src/themes/datashare/app/item-page/simple/item-types/untyped-item/untyped-item.component.ts | Trailing comma fix |
| src/themes/datashare/app/item-page/simple/field-components/file-section/file-section.component.ts | Hide “download all” on embargo + wire access status |
| src/themes/datashare/app/item-page/simple/field-components/file-section/file-section.component.html | Conditional “download all” + show badge on bitstreams |
| src/themes/datashare/app/info/organised/organised.component.ts | Selector + imports formatting |
| src/themes/datashare/app/info/copyright/copyright.component.ts | Selector change to themed selector |
| src/themes/datashare/app/info/accessibility-statement/accessibility-statement.component.ts | Selector change to themed selector |
| src/themes/datashare/app/info/about/about.component.ts | Selector change to themed selector |
| src/themes/datashare/app/home-page/home-news/home-news.component.ts | Use themed deposit button wrapper |
| src/themes/datashare/app/home-page/home-news/home-news.component.html | Changes homepage heading text |
| src/themes/datashare/app/footer/footer.component.ts | Indentation cleanup |
| src/themes/datashare/app/footer/footer.component.scss | Removes CoreTrustSeal logo styles |
| src/themes/datashare/app/footer/footer.component.html | Removes CoreTrustSeal logo link |
| src/themes/datashare/app/datashare/deposit-button/deposit-button.component.ts | DataShare deposit button wiring/formatting |
| src/themes/datashare/app/datashare/deposit-button/deposit-button.component.spec.ts | Adds providers/mocks for standalone test |
| src/themes/custom/app/shared/file-download-link/file-download-link.component.ts | Import badge wrapper for template use |
| src/environments/environment.test.ts | Enables bitstream access statuses in test env |
| src/config/item-config.interface.ts | Adds item.bitstream.showAccessStatuses config |
| src/config/default-app-config.ts | Default enables bitstream access-status badges |
| src/assets/i18n/en.json5 | Adds embargo-until + remove-section strings; updates subject heading |
| src/app/thumbnail/thumbnail.component.spec.ts | Adds accessStatus link to test bitstreams |
| src/app/submission/sections/upload/section-upload.component.ts | Import cleanup + minor typing simplification |
| src/app/submission/sections/upload/section-upload.component.spec.ts | Adds DatashareSubmissionService mock/provider |
| src/app/submission/sections/container/section-container.component.ts | Minor typing/formatting |
| src/app/submission/sections/container/section-container.component.spec.ts | Provides DatashareSubmissionFormSectionContainerService mock |
| src/app/submission/sections/container/section-container.component.html | Adds aria-labels; adjusts panel content rendering |
| src/app/submission/form/submission-form.component.ts | Import order + trailing comma |
| src/app/submission/form/footer/submission-form-footer.component.ts | Removes unused import + formatting |
| src/app/submission/form/footer/submission-form-footer.component.spec.ts | Adds DatashareSubmissionService mock/provider |
| src/app/shared/search/search-filters/search-filter/search-filter.component.html | Removes subject special-case; relies on i18n key |
| src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model.ts | Adds embargoDate to access-status model |
| src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.ts | Supports Item + Bitstream; resolves accessStatus via LinkService |
| src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.spec.ts | Migrates test to LinkService; sets accessStatus on item |
| src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.scss | Adds badge styling incl. embargo color |
| src/app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component.html | Renders badge with new @if and embargo date interpolation |
| src/app/shared/form/form.component.ts | Prevents removing last array group by clearing values instead |
| src/app/shared/form/form.component.spec.ts | Updates tests for new “clear last item” behavior |
| src/app/shared/form/form.component.html | Safer optional chaining for array “add” label |
| src/app/shared/form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component.html | Adds aria-labelledby for textbox |
| src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.html | Adds aria-labels to action buttons |
| src/app/shared/file-download-link/themed-file-download-link.component.ts | Plumbs new showAccessStatusBadge input through themed wrapper |
| src/app/shared/file-download-link/file-download-link.component.ts | Imports badge wrapper + adds showAccessStatusBadge input |
| src/app/shared/file-download-link/file-download-link.component.spec.ts | Updates override imports to match standalone imports |
| src/app/shared/file-download-link/file-download-link.component.html | Adds access-status badge + tweaks lock icon padding |
| src/app/shared/dso-page/dso-edit-menu/dso-edit-menu-section/dso-edit-menu-section.component.spec.ts | Updates expected button class selector |
| src/app/shared/dso-page/dso-edit-menu/dso-edit-expandable-menu-section/dso-edit-menu-expandable-section.component.spec.ts | Updates expected button class selector |
| src/app/shared/comcol/comcol-page-browse-by/comcol-page-browse-by.component.ts | Comment indentation cleanup |
| src/app/item-page/simple/field-components/specific-field/uri/item-page-uri-field.component.spec.ts | Uses more realistic URI test value |
| src/app/item-page/simple/field-components/specific-field/item-page-field.component.ts | Import reorder/formatting |
| src/app/item-page/simple/field-components/specific-field/date/item-page-date-field.component.spec.ts | Switches mock field to dc.date.available |
| src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts | Adjusts expected number of download links |
| src/app/item-page/simple/field-components/file-section/file-section.component.html | Enables access-status badge on bitstream links |
| src/app/item-page/full/field-components/file-section/full-file-section.component.html | Enables access-status badge on bitstream links |
| src/app/item-page/field-components/metadata-uri-values/metadata-uri-values.component.spec.ts | Uses realistic DOI URLs in tests |
| src/app/info/organised/themed-organised.component.ts | Adds eslint disable + trailing comma |
| src/app/info/organised/organised.component.ts | Renames selector to ds-base-organised |
| src/app/info/organised/organised.component.spec.ts | Migrates to standalone import usage |
| src/app/info/info-routes.ts | Reorders imports + trailing commas in route defs |
| src/app/info/end-user-agreement/end-user-agreement-content/end-user-agreement-content.component.html | Adds link contrast class for accessibility |
| src/app/info/copyright/themed-copyright.component.ts | Adds eslint disable + trailing comma |
| src/app/info/copyright/copyright.component.ts | Renames selector to ds-base-copyright |
| src/app/info/copyright/copyright.component.spec.ts | Migrates to standalone import usage |
| src/app/info/accessibility-statement/accessibility-statement.component.ts | Renames selector to ds-base-accessibility-statement |
| src/app/info/about/themed-about.component.ts | Documents selector exception + trailing comma |
| src/app/info/about/about.component.ts | Renames selector to ds-base-about |
| src/app/info/about/about.component.spec.ts | Migrates to standalone import usage |
| src/app/home-page/recent-item-list/recent-item-list.component.html | Removes incorrect role="link" from button |
| src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html | Removes unnecessary presentation role |
| src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-headers/dso-edit-metadata-headers.component.html | Adds table roles for headers/row |
| src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.html | Removes presentation roles; aligns with new header roles |
| src/app/datashare/download-link.service.ts | Cleans imports + formatting |
| src/app/datashare/download-link.service.spec.ts | Adds HttpClientTestingModule |
| src/app/datashare/deposit-button/deposit-button.component.ts | Renames selector to ds-base-deposit-button |
| src/app/datashare/deposit-button/deposit-button.component.spec.ts | Formatting cleanup |
| src/app/datashare/datashare-submission.service.ts | Refactors formatting; uses signals; adds helpers |
| src/app/datashare/datashare-submission.service.spec.ts | Fixes test injection + stubs |
| src/app/datashare/datashare-submission-form-section-container.service.ts | Formatting cleanup |
| src/app/core/shared/bitstream.model.ts | Adds accessStatus HAL link + resolved link property |
| src/app/core/data/access-status-data.service.ts | Supports Item + Bitstream access status retrieval |
| src/app/community-list-page/community-list-page.component.html | Changes heading level to h2 |
| package.json | Uses Karma ChromeHeadlessCI launcher in headless tests |
| karma.conf.js | Adds ChromeHeadlessCI custom launcher + timeouts |
| cypress/e2e/submission.cy.ts | Opens accordion panels explicitly; a11y rule suppression note |
| cypress/e2e/item-edit.cy.ts | Waits for loading to finish before assertions |
| cypress/e2e/homepage.cy.ts | Updates expected title + waits for loading before a11y |
| cypress/e2e/collection-create.cy.ts | Intercepts POST to ensure loading is visible |
| .github/workflows/codescan.yml | Bumps CodeQL action to v3 |
| .github/workflows/build.yml | Adjusts registry/login assumptions; tweaks SSR check + coverage behavior |
Comments suppressed due to low confidence (2)
src/themes/datashare/app/datashare/deposit-button/deposit-button.component.ts:30
- There are a couple of accidental double-spaces in the import and class declaration (
import { DepositButtonComponent...andexport class DepositButtonComponent...). Please normalize spacing to avoid lint/style violations.
src/app/datashare/datashare-submission.service.ts:34 - This service logs to the browser console on creation and when updating state. Console logging in a singleton service will be noisy in production and can leak internal details. Please remove these
console.logcalls or replace them with the project’s logging mechanism behind a debug flag.
constructor(private notificationsService: NotificationsService,
private translate: TranslateService,
) {
console.log('DatashareSubmissionService created');
}
/**
* Update the deposit button visibility state
*/
updatehasUploadFilesErrors(show: boolean): void {
console.log('Updating hasUploadFilesErrors to:', show);
this._hasUploadFilesErrorsSignal.set(show);
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
cf663a2
into
UoEMainLibrary:datashare-UoEMainLibrary-dspace-8_x
9 checks passed
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR with all fixed must have issues.