diff --git a/src/actions/__tests__/sponsor-purchases-actions.test.js b/src/actions/__tests__/sponsor-purchases-actions.test.js index 1a5c58868..705c0a655 100644 --- a/src/actions/__tests__/sponsor-purchases-actions.test.js +++ b/src/actions/__tests__/sponsor-purchases-actions.test.js @@ -46,6 +46,12 @@ jest.mock("openstack-uicore-foundation/lib/utils/actions", () => ({ })) })); +// webpack inlines this asset as a data URI, the generic png file mock would return {} +jest.mock( + "../../assets/fn-invoice-header.png", + () => "data:image/png;base64,TEST" +); + jest.mock( "openstack-uicore-foundation/lib/components/order-invoice-pdf", () => ({ @@ -93,7 +99,9 @@ describe("downloadSponsorInvoice", () => { expect(generateInvoicePDF).toHaveBeenCalledWith( fetchedOrder, { id: 1 }, - expect.objectContaining({ logoSrc: expect.anything() }) + expect.objectContaining({ + logoSrc: expect.stringMatching(/^data:image\/png;base64,/) + }) ); expect(snackbarErrorMsg).not.toHaveBeenCalled(); }); diff --git a/webpack.common.js b/webpack.common.js index 852d1b239..63471b5ea 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -120,8 +120,14 @@ module.exports = { test: /\.(woff|woff2|eot|ttf|otf)$/i, type: "asset/resource" }, + { + // inline the invoice logo so react-pdf never fetches it (CDN may serve WebP, react-pdf caches failures) + test: /fn-invoice-header\.png$/, + type: "asset/inline" + }, { test: /\.jpg|\.png|\.gif$/, + exclude: /fn-invoice-header\.png$/, use: "file-loader?name=images/[name].[ext]" }, {