diff --git a/.github/workflows/component-tests.yml b/.github/workflows/component-tests.yml new file mode 100644 index 000000000..fcc2c2138 --- /dev/null +++ b/.github/workflows/component-tests.yml @@ -0,0 +1,48 @@ +name: Run Component Tests + +on: + workflow_dispatch: + inputs: + ref: + description: 'Branch/Tag/SHA to test' + required: true + pull_request: + paths: + - 'client/**' + - '.github/workflows/component-tests.yml' + push: + paths: + - 'client/**' + - '.github/workflows/component-tests.yml' + +jobs: + run-component-tests: + name: Run Component Tests + runs-on: ubuntu-latest + + steps: + - name: Checkout (push/pull request) + uses: actions/checkout@v4 + if: github.event_name != 'workflow_dispatch' + + - name: Checkout (workflow_dispatch) + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + if: github.event_name == 'workflow_dispatch' + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'npm' + + - name: Install dependencies + run: | + cd client + npm ci + + - name: Run tests + run: | + cd client + npm test diff --git a/client/components/cards/LazyBookCard.vue b/client/components/cards/LazyBookCard.vue index e9ad8c8de..35c959fad 100644 --- a/client/components/cards/LazyBookCard.vue +++ b/client/components/cards/LazyBookCard.vue @@ -223,8 +223,7 @@ export default { return this.mediaMetadata.explicit || false }, placeholderUrl() { - const config = this.$config || this.$nuxt.$config - return `${config.routerBasePath}/book_placeholder.jpg` + return this.store.getters['globals/getPlaceholderCoverSrc'] }, bookCoverSrc() { return this.store.getters['globals/getLibraryItemCoverSrc'](this._libraryItem, this.placeholderUrl) diff --git a/client/components/covers/BookCover.vue b/client/components/covers/BookCover.vue index 0a9248d22..e55d38c17 100644 --- a/client/components/covers/BookCover.vue +++ b/client/components/covers/BookCover.vue @@ -96,8 +96,8 @@ export default { return this.author }, placeholderUrl() { - const config = this.$config || this.$nuxt.$config - return `${config.routerBasePath}/book_placeholder.jpg` + const store = this.$store || this.$nuxt.$store + return store.getters['globals/getPlaceholderCoverSrc'] }, fullCoverUrl() { if (!this.libraryItem) return null diff --git a/client/components/covers/PreviewCover.vue b/client/components/covers/PreviewCover.vue index 0b73b009c..0ce7e55ed 100644 --- a/client/components/covers/PreviewCover.vue +++ b/client/components/covers/PreviewCover.vue @@ -18,7 +18,7 @@ -
{{ resolution }}
+{{ resolution }}
@@ -65,11 +65,12 @@ export default { return 0.8 * this.sizeMultiplier }, resolution() { + if (!this.naturalWidth || !this.naturalHeight) return null return `${this.naturalWidth}×${this.naturalHeight}px` }, placeholderUrl() { - const config = this.$config || this.$nuxt.$config - return `${config.routerBasePath}/book_placeholder.jpg` + const store = this.$store || this.$nuxt.$store + return store.getters['globals/getPlaceholderCoverSrc'] } }, methods: { diff --git a/client/components/modals/item/tabs/Cover.vue b/client/components/modals/item/tabs/Cover.vue index fd258760a..17979f708 100644 --- a/client/components/modals/item/tabs/Cover.vue +++ b/client/components/modals/item/tabs/Cover.vue @@ -2,7 +2,7 @@