From c3dc0123fba5faf992c971ce3b5f6dfc3053182b Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Thu, 27 Apr 2023 17:19:31 -0700 Subject: [PATCH 1/5] Update references to Acuant 11.8.2 (This is a cleanup commit) [skip changelog] --- .../packages/document-capture/context/acuant.tsx | 4 ++-- config/application.yml.default | 4 ++-- .../document-capture/components/acuant-sdk-spec.js | 8 ++++---- spec/views/idv/shared/_document_capture.html.erb_spec.rb | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/javascript/packages/document-capture/context/acuant.tsx b/app/javascript/packages/document-capture/context/acuant.tsx index ae9dbd5e400..e54e9a521e3 100644 --- a/app/javascript/packages/document-capture/context/acuant.tsx +++ b/app/javascript/packages/document-capture/context/acuant.tsx @@ -193,8 +193,8 @@ const getActualAcuantCamera = (): AcuantCameraInterface => { }; function AcuantContextProvider({ - sdkSrc = '/acuant/11.8.1/AcuantJavascriptWebSdk.min.js', - cameraSrc = '/acuant/11.8.1/AcuantCamera.min.js', + sdkSrc = '/acuant/11.8.2/AcuantJavascriptWebSdk.min.js', + cameraSrc = '/acuant/11.8.2/AcuantCamera.min.js', credentials = null, endpoint = null, glareThreshold = DEFAULT_ACCEPTABLE_GLARE_SCORE, diff --git a/config/application.yml.default b/config/application.yml.default index 95b0428c86a..76ac6f12055 100644 --- a/config/application.yml.default +++ b/config/application.yml.default @@ -124,8 +124,8 @@ idv_available: true idv_contact_phone_number: (844) 555-5555 idv_max_attempts: 5 idv_min_age_years: 13 -idv_acuant_sdk_version_default: '11.8.1' -idv_acuant_sdk_version_alternate: '11.8.0' +idv_acuant_sdk_version_default: '11.8.2' +idv_acuant_sdk_version_alternate: '11.8.1' idv_acuant_sdk_upgrade_a_b_testing_enabled: false idv_acuant_sdk_upgrade_a_b_testing_percent: 50 idv_send_link_attempt_window_in_minutes: 10 diff --git a/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js b/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js index eb76b001f18..0f782c97b95 100644 --- a/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js +++ b/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js @@ -3,10 +3,10 @@ * */ import { JSDOM } from 'jsdom'; -import AcuantJavascriptWebSdk from '../../../../../public/acuant/11.8.1/AcuantJavascriptWebSdk.min.js'; +import AcuantJavascriptWebSdk from '../../../../../public/acuant/11.8.2/AcuantJavascriptWebSdk.min.js'; const sdkPaths = { - '11.8.1': '../../../../../public/acuant/11.8.1/AcuantJavascriptWebSdk.min.js', + '11.8.2': '../../../../../public/acuant/11.8.2/AcuantJavascriptWebSdk.min.js', }; const TEST_URL = `file://${__dirname}/index.html`; @@ -25,14 +25,14 @@ describe('Acuant SDK Loading Tests', () => { it('Can load something from the SDK file', () => { expect(AcuantJavascriptWebSdk).to.exist(); }); - describe('DOM Loading 11.8.1', () => { + describe('DOM Loading 11.8.2', () => { before((done) => { const scriptEl = document.createElement('script'); scriptEl.id = 'test-acuant-sdk-script'; scriptEl.onload = () => { done(); }; - scriptEl.src = sdkPaths['11.8.1']; + scriptEl.src = sdkPaths['11.8.2']; document.body.append(scriptEl); }); it('There is a script element in the DOM', () => { diff --git a/spec/views/idv/shared/_document_capture.html.erb_spec.rb b/spec/views/idv/shared/_document_capture.html.erb_spec.rb index e9d5d4a3922..039880abb22 100644 --- a/spec/views/idv/shared/_document_capture.html.erb_spec.rb +++ b/spec/views/idv/shared/_document_capture.html.erb_spec.rb @@ -15,7 +15,7 @@ let(:back_image_upload_url) { nil } let(:acuant_sdk_upgrade_a_b_testing_enabled) { false } let(:use_alternate_sdk) { false } - let(:acuant_version) { '11.8.1' } + let(:acuant_version) { '11.8.2' } let(:in_person_cta_variant_testing_enabled) { false } let(:in_person_cta_variant_active) { '' } From b99d07a7f90c0c60d7df4f9fcbc5abbc56efcf60 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 28 Apr 2023 08:55:10 -0700 Subject: [PATCH 2/5] Rework Acuant SDK loading tests - Remove references to specific version numbers - Test all versions present in the git repo - Just test loading in JSDOM session (don't bother importing) --- .../components/acuant-sdk-spec.js | 93 ++++++++++--------- 1 file changed, 50 insertions(+), 43 deletions(-) diff --git a/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js b/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js index 0f782c97b95..0a05ed9c351 100644 --- a/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js +++ b/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js @@ -2,50 +2,57 @@ * Acuant SDK Loading Tests * */ +import fs from 'node:fs/promises'; +import path from 'node:path'; + import { JSDOM } from 'jsdom'; -import AcuantJavascriptWebSdk from '../../../../../public/acuant/11.8.2/AcuantJavascriptWebSdk.min.js'; - -const sdkPaths = { - '11.8.2': '../../../../../public/acuant/11.8.2/AcuantJavascriptWebSdk.min.js', -}; - -const TEST_URL = `file://${__dirname}/index.html`; - -const { window } = new JSDOM( - 'JSDOM', - { - url: TEST_URL, - runScripts: 'dangerously', - resources: 'usable', - }, -); -const { document } = window; - -describe('Acuant SDK Loading Tests', () => { - it('Can load something from the SDK file', () => { - expect(AcuantJavascriptWebSdk).to.exist(); - }); - describe('DOM Loading 11.8.2', () => { - before((done) => { - const scriptEl = document.createElement('script'); - scriptEl.id = 'test-acuant-sdk-script'; - scriptEl.onload = () => { - done(); - }; - scriptEl.src = sdkPaths['11.8.2']; - document.body.append(scriptEl); - }); - it('There is a script element in the DOM', () => { - const found = document.getElementById('test-acuant-sdk-script'); - expect(found).to.exist(); - }); - it('Has a global loadAcuantSdk object on the window', () => { - expect(window.loadAcuantSdk).to.exist(); - }); - it('Calling loadAcuantSdk gives us AcuantJavascriptWebSdk in the global scope and as a prop of the window', () => { - window.loadAcuantSdk(); - expect(AcuantJavascriptWebSdk).to.exist(); - expect(window.AcuantJavascriptWebSdk).to.exist(); + +const ACUANT_PUBLIC_DIR = '../../../../../public/acuant'; +const VERSION_REGEX = /^\d+\.\d+\.\d+$/; + +describe('Acuant SDK Loading Tests', async () => { + const sdks = (await fs.readdir(path.join(__dirname, ACUANT_PUBLIC_DIR))).filter((dir) => + VERSION_REGEX.test(dir), + ); + + sdks.forEach((version) => { + describe(version, () => { + const TEST_URL = `file://${__dirname}/index.html`; + + const { window } = new JSDOM( + 'JSDOM', + { + url: TEST_URL, + runScripts: 'dangerously', + resources: 'usable', + }, + ); + + const { document } = window; + + before((done) => { + const scriptEl = document.createElement('script'); + scriptEl.id = 'test-acuant-sdk-script'; + scriptEl.onload = () => { + done(); + }; + scriptEl.src = `${ACUANT_PUBLIC_DIR}/${version}/AcuantJavascriptWebSdk.min.js`; + document.body.append(scriptEl); + }); + + it('There is a script element in the DOM', () => { + const found = document.getElementById('test-acuant-sdk-script'); + expect(found).to.exist(); + }); + + it('Has a global loadAcuantSdk object on the window', () => { + expect(window.loadAcuantSdk).to.exist(); + }); + + it('Calling loadAcuantSdk gives us AcuantJavascriptWebSdk as a prop of the window', () => { + window.loadAcuantSdk(); + expect(window).to.have.property('AcuantJavascriptWebSdk'); + }); }); }); }); From 7bb2a140a0b6e77c99b2ec5251f11fb004d70f62 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 28 Apr 2023 09:02:37 -0700 Subject: [PATCH 3/5] Remove default values for sdkSrc and cameraSrc In actual use these are derived from the `data-acuant-version` on the `.document-capture-form`. All views that render the doc capture form provide this data. --- app/javascript/packages/document-capture/context/acuant.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/packages/document-capture/context/acuant.tsx b/app/javascript/packages/document-capture/context/acuant.tsx index e54e9a521e3..d6662a1a090 100644 --- a/app/javascript/packages/document-capture/context/acuant.tsx +++ b/app/javascript/packages/document-capture/context/acuant.tsx @@ -193,8 +193,8 @@ const getActualAcuantCamera = (): AcuantCameraInterface => { }; function AcuantContextProvider({ - sdkSrc = '/acuant/11.8.2/AcuantJavascriptWebSdk.min.js', - cameraSrc = '/acuant/11.8.2/AcuantCamera.min.js', + sdkSrc, + cameraSrc, credentials = null, endpoint = null, glareThreshold = DEFAULT_ACCEPTABLE_GLARE_SCORE, From 6750c09d45303f1ed993deeac6fce97c0f7b0557 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 28 Apr 2023 09:05:22 -0700 Subject: [PATCH 4/5] Don't use an actual version number in _document_capture.html.erb_spec.rb The version number doesn't actually matter for this test, so remove the desire to update it when we upgrade the Acuant SDK --- spec/views/idv/shared/_document_capture.html.erb_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/views/idv/shared/_document_capture.html.erb_spec.rb b/spec/views/idv/shared/_document_capture.html.erb_spec.rb index 039880abb22..5fa68c60112 100644 --- a/spec/views/idv/shared/_document_capture.html.erb_spec.rb +++ b/spec/views/idv/shared/_document_capture.html.erb_spec.rb @@ -15,7 +15,7 @@ let(:back_image_upload_url) { nil } let(:acuant_sdk_upgrade_a_b_testing_enabled) { false } let(:use_alternate_sdk) { false } - let(:acuant_version) { '11.8.2' } + let(:acuant_version) { '1.3.3.7' } let(:in_person_cta_variant_testing_enabled) { false } let(:in_person_cta_variant_active) { '' } From 1c6af6d55141c22c7058d90f88db893ea9bcee0e Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 28 Apr 2023 12:22:23 -0700 Subject: [PATCH 5/5] Update spec/javascripts/packages/document-capture/components/acuant-sdk-spec.js Co-authored-by: Andrew Duthie --- .../packages/document-capture/components/acuant-sdk-spec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js b/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js index 0a05ed9c351..0c848e0b1cd 100644 --- a/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js +++ b/spec/javascript/packages/document-capture/components/acuant-sdk-spec.js @@ -15,6 +15,10 @@ describe('Acuant SDK Loading Tests', async () => { VERSION_REGEX.test(dir), ); + if (!sdks.length) { + throw new Error('Expected to find at least one SDK version, but found none'); + } + sdks.forEach((version) => { describe(version, () => { const TEST_URL = `file://${__dirname}/index.html`;