From d5271e7353abf635c687146fecb15d6aa481a553 Mon Sep 17 00:00:00 2001 From: Angel Caamal Date: Fri, 21 Aug 2026 19:42:39 +0000 Subject: [PATCH 1/3] chore(retail): update package dependencies --- retail/package.json | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/retail/package.json b/retail/package.json index 7ecfac91975..93cde490010 100644 --- a/retail/package.json +++ b/retail/package.json @@ -4,7 +4,7 @@ "license": "Apache-2.0", "author": "Google LLC", "engines": { - "node": ">=16.0.0" + "node": ">=20.0.0" }, "files": [ "*.js" @@ -12,17 +12,14 @@ "scripts": { "test": "c8 mocha -p -j 2" }, - "engines": { - "node": ">=16.0.0" - }, "dependencies": { - "@google-cloud/bigquery": "^7.0.0", - "@google-cloud/retail": "^3.0.0", - "@google-cloud/storage": "^7.0.0" + "@google-cloud/bigquery": "^8.3.1", + "@google-cloud/retail": "^4.0.0", + "@google-cloud/storage": "^8.0.0" }, "devDependencies": { - "c8": "^10.0.0", - "chai": "^4.5.0", + "c8": "^12.0.0", + "chai": "^6.0.0", "mocha": "^10.2.0" } } From b11da1ed088fcfa635e0a042f60d1654ef13a8e6 Mon Sep 17 00:00:00 2001 From: Angel Caamal Date: Fri, 21 Aug 2026 20:59:56 +0000 Subject: [PATCH 2/3] test(retail): handle eventual consistency in product crud test --- retail/interactive-tutorials/product/crud-product.js | 5 +++++ retail/interactive-tutorials/test/crud-product.test.js | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/retail/interactive-tutorials/product/crud-product.js b/retail/interactive-tutorials/product/crud-product.js index 061064e3b31..53863538bed 100644 --- a/retail/interactive-tutorials/product/crud-product.js +++ b/retail/interactive-tutorials/product/crud-product.js @@ -119,11 +119,16 @@ async function main(generatedProductId) { }; console.log('Start CRUD product'); + const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); // Create product console.log('Start to create the product'); const createdProduct = await callCreateProduct(); console.log(`Product ${createdProduct.id} creation finished`); + // Wait for the product to be available for read operations + const API_PROPAGATION_DELAY_MS = 30000; // 30 seconds + await delay(API_PROPAGATION_DELAY_MS); + // Get product console.log('Start product get operation'); const foundProduct = await callGetProduct(); diff --git a/retail/interactive-tutorials/test/crud-product.test.js b/retail/interactive-tutorials/test/crud-product.test.js index bad2e59486b..198c40c6d74 100644 --- a/retail/interactive-tutorials/test/crud-product.test.js +++ b/retail/interactive-tutorials/test/crud-product.test.js @@ -111,6 +111,11 @@ describe('CRUD product', () => { after(async () => { try { + // Allow brief propagation time for product deletion + const API_PROPAGATION_DELAY_MS = 30000; // 30 seconds + await new Promise(resolve => + setTimeout(resolve, API_PROPAGATION_DELAY_MS) + ); const product = await retailClient.getProduct({name: name}); expect(product, 'The product not deleted').to.be.undefined; } catch (err) { From d7f3027972aff1834f50be9de581e034559b3d3e Mon Sep 17 00:00:00 2001 From: Angel Caamal Date: Fri, 21 Aug 2026 21:14:28 +0000 Subject: [PATCH 3/3] test(retail): add propagation delay to get product test --- retail/interactive-tutorials/product/get-product.js | 5 +++++ retail/interactive-tutorials/test/get-product.test.js | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/retail/interactive-tutorials/product/get-product.js b/retail/interactive-tutorials/product/get-product.js index 3af581e4132..30a364cb918 100644 --- a/retail/interactive-tutorials/product/get-product.js +++ b/retail/interactive-tutorials/product/get-product.js @@ -18,6 +18,7 @@ async function main(generatedProductId) { // Imports the Google Cloud client library. const {ProductServiceClient} = require('@google-cloud/retail').v2; const utils = require('../setup/setup-cleanup'); + const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); // Instantiates a client. const retailClient = new ProductServiceClient(); @@ -27,6 +28,10 @@ async function main(generatedProductId) { // Create product const product = await utils.createProduct(projectId, generatedProductId); + // Wait for the product to be available for read operations + const API_PROPAGATION_DELAY_MS = 30000; // 30 seconds + await delay(API_PROPAGATION_DELAY_MS); + // Full resource name of Product const name = product.name; diff --git a/retail/interactive-tutorials/test/get-product.test.js b/retail/interactive-tutorials/test/get-product.test.js index cc83167d06b..dba736ac75e 100644 --- a/retail/interactive-tutorials/test/get-product.test.js +++ b/retail/interactive-tutorials/test/get-product.test.js @@ -64,6 +64,11 @@ describe('Get product', () => { after(async () => { try { + // Allow brief propagation time for product deletion + const API_PROPAGATION_DELAY_MS = 30000; // 30 seconds + await new Promise(resolve => + setTimeout(resolve, API_PROPAGATION_DELAY_MS) + ); const product = await retailClient.getProduct({name: name}); expect(product, 'The product not deleted').to.be.undefined; } catch (err) {