Skip to content

UoE/Version 8.2#2

Merged
dspeed2 merged 77 commits into
UoEMainLibrary:datashare-UoEMainLibrary-dspace-8_xfrom
dataquest-dev:uoe/version-8.2
May 6, 2026
Merged

UoE/Version 8.2#2
dspeed2 merged 77 commits into
UoEMainLibrary:datashare-UoEMainLibrary-dspace-8_xfrom
dataquest-dev:uoe/version-8.2

Conversation

@milanmajchrak
Copy link
Copy Markdown
Collaborator

PR with all fixed must have issues.

milanmajchrak and others added 30 commits April 2, 2026 11:06
…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.
milanmajchrak and others added 26 commits April 13, 2026 14:52
- 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'
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.
UoE/fix: Github actions - it2
Copilot AI review requested due to automatic review settings April 24, 2026 12:20
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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... and export 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.log calls 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.

Comment thread src/app/community-list-page/community-list-page.component.html
Comment thread src/app/shared/form/form.component.ts
@dspeed2 dspeed2 merged commit cf663a2 into UoEMainLibrary:datashare-UoEMainLibrary-dspace-8_x May 6, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants