diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml
index 02fcf2d42..43ff5c05b 100644
--- a/.github/workflows/master.yml
+++ b/.github/workflows/master.yml
@@ -13,11 +13,11 @@ jobs:
 # Extension package and artifact on master
 ####
   extension-build:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
@@ -57,11 +57,11 @@ jobs:
         path: accessibility-checker-extension/package/accessibility-checker-extension.zip
 
   act-results:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
@@ -96,11 +96,11 @@ jobs:
         path: accessibility-checker/test-act-w3/act-report-v2.txt
 
   rule-deploy:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 51682c0c7..8b5d508e1 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -13,11 +13,11 @@ jobs:
 # NPM Node
 ####
   accessibility-checker-engine-publish:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
 
       steps:
       - uses: actions/checkout@v3
@@ -52,11 +52,11 @@ jobs:
           NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
 
   accessibility-checker-publish:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
 
       steps:
       - uses: actions/checkout@v3
@@ -75,11 +75,11 @@ jobs:
           NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
 
   karma-accessibility-checker-publish:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
 
       steps:
       - uses: actions/checkout@v3
@@ -98,11 +98,11 @@ jobs:
           NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
 
   cypress-accessibility-checker-publish:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
 
       steps:
       - uses: actions/checkout@v3
@@ -123,11 +123,11 @@ jobs:
           NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
 
   extension-build:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
@@ -193,11 +193,11 @@ jobs:
         path: accessibility-checker-extension/package/accessibility-checker-extension.zip
 
   rule-deploy:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 0bb5c1463..364e59cdc 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -10,11 +10,11 @@ jobs:
 # Engine test
 ####
   accessibility-checker-engine-test:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
@@ -40,11 +40,11 @@ jobs:
       working-directory: accessibility-checker-engine
 
   act-results:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
@@ -86,7 +86,7 @@ jobs:
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
       - uses: actions/checkout@v3
@@ -132,11 +132,11 @@ jobs:
 # Node basic test
 ####
   accessibility-checker-test-basic:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
 
       steps:
       - uses: actions/checkout@v3
@@ -178,11 +178,11 @@ jobs:
 # Node basic test
 ####
   accessibility-checker-test-basic2:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
 
       steps:
       - uses: actions/checkout@v3
@@ -218,11 +218,11 @@ jobs:
 # Node Selenium test
 ####
   accessibility-checker-test-selenium:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
 
       steps:
       - uses: actions/checkout@v3
@@ -259,11 +259,11 @@ jobs:
 # Node Playwright test
 ####
   accessibility-checker-test-playwright:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
@@ -298,11 +298,11 @@ jobs:
 # Karma Tests
 ####
   karma-accessibility-checker-test:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
           # test-file: [karma.conf1.js, karma.conf1b.js, karma.conf2.js, karma.conf2b.js, karma.conf3.js] // conf1 and conf2 fail a lot
           test-file: [karma.conf1b.js, karma.conf2b.js, karma.conf3.js]
 
@@ -342,11 +342,11 @@ jobs:
 # Cypress test
 ####
   cypress-checker-test-basic:
-      runs-on: ubuntu-20.04
+      runs-on: ubuntu-22.04
 
       strategy:
         matrix:
-          node-version: [16.x]
+          node-version: [18.x]
 
       steps:
       - uses: actions/checkout@v3
@@ -370,19 +370,21 @@ jobs:
       - run: npm install
         working-directory: cypress-accessibility-checker
       - run: npm run build:report
-        working-directory: cypress-accessibility-checker        
-      - run: npm test
         working-directory: cypress-accessibility-checker
+      - run: npm run test:start-http &
+        working-directory: cypress-accessibility-checker
+      - run: npx cypress run
+        working-directory: cypress-accessibility-checker/test
 
 ###############################################################################
 # Extension Build verification
 ####
   extension-test:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
@@ -422,11 +424,11 @@ jobs:
         path: accessibility-checker-extension/package/accessibility-checker-extension.zip
 
   rule-deploy:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
 
     strategy:
       matrix:
-        node-version: [16.x]
+        node-version: [18.x]
 
     steps:
     - uses: actions/checkout@v3
diff --git a/accessibility-checker-engine/package.json b/accessibility-checker-engine/package.json
index 9a655f34d..aa2cabef8 100644
--- a/accessibility-checker-engine/package.json
+++ b/accessibility-checker-engine/package.json
@@ -17,7 +17,7 @@
     "author": "IBM",
     "license": "SEE LICENSE IN LICENSE from the 'equal-access' repository",
     "devDependencies": {
-        "@types/node": "^16.10.2",
+        "@types/node": "^18.15.3",
         "chai": "^4.3.4",
         "coverage-istanbul-loader": "^3.0.5",
         "express": "^4.17.1",
diff --git a/accessibility-checker-extension/package-lock.json b/accessibility-checker-extension/package-lock.json
index f8adc18ac..2e0beb679 100644
--- a/accessibility-checker-extension/package-lock.json
+++ b/accessibility-checker-extension/package-lock.json
@@ -28,7 +28,7 @@
 				"@types/chrome": "^0.0.171",
 				"@types/jest": "^27.0.3",
 				"@types/markdown-to-jsx": "^7.0.0",
-				"@types/node": "^16.10.2",
+				"@types/node": "^18.15.3",
 				"@types/react": "17.0.37",
 				"@types/react-dom": "^17.0.11",
 				"@types/react-redux": "^7.1.20",
@@ -3648,9 +3648,9 @@
 			"dev": true
 		},
 		"node_modules/@types/node": {
-			"version": "16.18.16",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz",
-			"integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA=="
+			"version": "18.16.12",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.12.tgz",
+			"integrity": "sha512-tIRrjbY9C277MOfP8M3zjMIhtMlUJ6YVqkGgLjz+74jVsdf4/UjC6Hku4+1N0BS0qyC0JAS6tJLUk9H6JUKviQ=="
 		},
 		"node_modules/@types/parse-json": {
 			"version": "4.0.0",
@@ -18791,9 +18791,9 @@
 			"dev": true
 		},
 		"@types/node": {
-			"version": "16.18.16",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz",
-			"integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA=="
+			"version": "18.16.12",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.12.tgz",
+			"integrity": "sha512-tIRrjbY9C277MOfP8M3zjMIhtMlUJ6YVqkGgLjz+74jVsdf4/UjC6Hku4+1N0BS0qyC0JAS6tJLUk9H6JUKviQ=="
 		},
 		"@types/parse-json": {
 			"version": "4.0.0",
diff --git a/accessibility-checker-extension/package.json b/accessibility-checker-extension/package.json
index eae41a3ed..10076f02a 100644
--- a/accessibility-checker-extension/package.json
+++ b/accessibility-checker-extension/package.json
@@ -37,7 +37,7 @@
 		"@types/chrome": "^0.0.171",
 		"@types/jest": "^27.0.3",
 		"@types/markdown-to-jsx": "^7.0.0",
-		"@types/node": "^16.10.2",
+		"@types/node": "^18.15.3",
 		"@types/react": "17.0.37",
 		"@types/react-dom": "^17.0.11",
 		"@types/react-redux": "^7.1.20",
diff --git a/accessibility-checker/package.json b/accessibility-checker/package.json
index 60e355abf..3122f6e00 100644
--- a/accessibility-checker/package.json
+++ b/accessibility-checker/package.json
@@ -32,7 +32,7 @@
   },
   "devDependencies": {
     "@playwright/test": "^1.21.1",
-    "@types/node": "^16.10.2",
+    "@types/node": "^18.15.3",
     "adm-zip": "^0.5.9",
     "chai": "^4.3.4",
     "eslint": "^8.4.1",
diff --git a/cypress-accessibility-checker/test/baselines/getBaseline test.json b/cypress-accessibility-checker/test/baselines/getBaseline test.json
index 2db2fba0b..ffed74dff 100644
--- a/cypress-accessibility-checker/test/baselines/getBaseline test.json	
+++ b/cypress-accessibility-checker/test/baselines/getBaseline test.json	
@@ -1,7 +1,7 @@
 {
     "results": [
         {
-            "ruleId": "WCAG20_Html_HasLang",
+            "ruleId": "html_lang_exists",
             "value": [
                 "VIOLATION",
                 "FAIL"
@@ -27,7 +27,7 @@
             "level": "violation"
         },
         {
-            "ruleId": "WCAG20_Body_FirstASkips_Native_Host_Sematics",
+            "ruleId": "skip_main_exists",
             "value": [
                 "VIOLATION",
                 "FAIL"
@@ -38,7 +38,7 @@
             },
             "ruleTime": 0,
             "reasonId": "Fail_1",
-            "message": "The page does not provide a way to quickly navigate to the main content (WAI-ARIA \"main\" landmark or a skip link)",
+            "message": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)",
             "messageArgs": [],
             "apiArgs": [],
             "bounds": {
@@ -53,7 +53,7 @@
             "level": "violation"
         },
         {
-            "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics",
+            "ruleId": "aria_content_in_landmark",
             "value": [
                 "VIOLATION",
                 "FAIL"
@@ -79,7 +79,7 @@
             "level": "violation"
         },
         {
-            "ruleId": "WCAG20_Img_HasAlt",
+            "ruleId": "img_alt_valid",
             "value": [
                 "VIOLATION",
                 "FAIL"
@@ -89,8 +89,8 @@
                 "aria": "/document[1]/img[1]"
             },
             "ruleTime": 0,
-            "reasonId": "Fail_2",
-            "message": "Image does not have an 'alt' attribute short text alternative",
+            "reasonId": "fail_no_alt",
+            "message": "The image has neither an alt atttribute nor an ARIA label or title",
             "messageArgs": [],
             "apiArgs": [],
             "bounds": {
@@ -105,80 +105,80 @@
             "level": "violation"
         }
     ],
-    "numExecuted": 68,
+    "numExecuted": 46,
     "nls": {
-        "WCAG20_Html_HasLang": {
+        "html_lang_exists": {
             "0": "Page must identify the default language of the document with a 'lang' attribute",
             "Fail_3": "Page detected as HTML, but does not have a 'lang' attribute"
         },
-        "RPT_Html_SkipNav": {
+        "html_skipnav_exists": {
             "0": "Provide a way to bypass blocks of content that are repeated on multiple Web pages",
             "Pass_0": "Rule Passed"
         },
-        "WCAG20_Doc_HasTitle": {
+        "page_title_exists": {
             "0": "The page should have a title that correctly identifies the subject of the page",
             "Pass_0": "Rule Passed"
         },
-        "HAAC_BackgroundImg_HasTextOrTitle": {
-            "0": "Background images that convey important information must have a text alternative that describes the image",
-            "Pass_0": "Rule Passed"
-        },
-        "RPT_List_UseMarkup": {
-            "0": "Use proper HTML list elements to create lists",
-            "Pass_0": "Rule Passed"
-        },
-        "RPT_Text_SensoryReference": {
-            "0": "Instructions must be meaningful without shape or location words",
-            "Pass_0": "Rule Passed"
-        },
-        "WCAG20_Text_Emoticons": {
+        "emoticons_alt_exists": {
             "0": "Emoticons must have a short text alternative that describes their purpose",
             "Pass_0": "Rule Passed"
         },
-        "WCAG20_Text_LetterSpacing": {
-            "0": "Use CSS 'letter-spacing' to control spacing within a word",
-            "Pass_0": "Rule Passed"
-        },
-        "text_quoted_correctly": {
-            "0": "Quotations should be marked with <q> or <blockquote> elements",
+        "img_alt_background": {
+            "0": "Background images that convey important information must have a text alternative that describes the image",
             "Pass_0": "Rule Passed"
         },
-        "IBMA_Color_Contrast_WCAG2AA_PV": {
-            "0": "The contrast ratio of text with its background (i.e. background with a color gradient or a background image) must meet WCAG 2.1 AA requirements",
+        "list_markup_review": {
+            "0": "Use proper HTML list elements to create lists",
             "Pass_0": "Rule Passed"
         },
-        "Rpt_Aria_OrphanedContent_Native_Host_Sematics": {
+        "aria_content_in_landmark": {
             "0": "All content must reside within an element with a landmark role",
             "Pass_0": "Rule Passed",
             "Fail_1": "Content is not within a landmark element"
         },
-        "RPT_Title_Valid": {
+        "page_title_valid": {
             "0": "Page <title> should be a descriptive title, rather than a filename",
             "Pass_0": "Rule Passed"
         },
-        "WCAG20_Body_FirstASkips_Native_Host_Sematics": {
+        "skip_main_exists": {
             "0": "Pages must provide a way to skip directly to the main content",
-            "Fail_1": "The page does not provide a way to quickly navigate to the main content (WAI-ARIA \"main\" landmark or a skip link)"
+            "Fail_1": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)"
         },
-        "RPT_Header_HasContent": {
-            "0": "Heading elements must provide descriptive text",
+        "text_sensory_misuse": {
+            "0": "Instructions must be meaningful without shape or location words",
             "Pass_0": "Rule Passed"
         },
-        "IBMA_Color_Contrast_WCAG2AA": {
-            "0": "The contrast ratio of text with its background must meet WCAG 2.1 AA requirements",
+        "text_quoted_correctly": {
+            "0": "Quotations should be marked with <q> or <blockquote> elements",
             "Pass_0": "Rule Passed"
         },
-        "RPT_Headers_FewWords": {
+        "text_whitespace_valid": {
+            "0": "Space characters should not be used to control spacing within a word",
+            "pass": "Rule Passed"
+        },
+        "heading_content_exists": {
+            "0": "Heading elements must provide descriptive text",
+            "Pass_0": "Heading element has descriptive text"
+        },
+        "heading_markup_misuse": {
             "0": "Heading elements must not be used for presentation",
             "Pass_0": "Rule Passed"
         },
-        "WCAG20_Img_HasAlt": {
-            "0": "Images must have an 'alt' attribute with a short text alternative if they convey meaning, or 'alt=\"\" if decorative",
-            "Fail_2": "Image does not have an 'alt' attribute short text alternative"
+        "text_contrast_sufficient": {
+            "0": "The contrast ratio of text with its background must meet WCAG 2.1 AA requirements",
+            "Pass_0": "Rule Passed"
         },
-        "RPT_Img_AltCommonMisuse": {
+        "img_alt_misuse": {
             "0": "'alt' attribute value must be a good inline replacement for the image",
             "Pass_0": "Rule Passed"
+        },
+        "img_alt_valid": {
+            "0": "Images require an 'alt' attribute with a short text alternative if they convey meaning, or 'alt=\"\" if decorative",
+            "fail_no_alt": "The image has neither an alt atttribute nor an ARIA label or title"
+        },
+        "aria_descendant_valid": {
+            "0": "Browsers ignore the explicit and implicit ARIA roles of the descendants of certain elements",
+            "pass": "The element contains valid descendants"
         }
     },
     "summary": {
@@ -187,7 +187,7 @@
             "potentialviolation": 0,
             "ignored": 0
         },
-        "scanTime": 8,
+        "scanTime": 12,
         "ruleArchive": "Latest Deployment (latest)",
         "policies": [
             "IBM_Accessibility"
@@ -196,10 +196,10 @@
             "violation",
             "potentialviolation"
         ],
-        "startScan": 1601305960181,
+        "startScan": 1684344547575,
         "URL": "http://localhost:8080/test/sample-html/violations.html"
     },
-    "scanID": "c2f76bde-b685-4c2c-b266-d5567e47f4b7",
+    "scanID": "c8d84346-1a4a-4dcb-9120-7798caa9ebb4",
     "toolID": "cypress-accessibility-checker-v3.0.0",
     "label": "getBaseline test"
 }
\ No newline at end of file
diff --git a/cypress-accessibility-checker/test/baselines/violations.json b/cypress-accessibility-checker/test/baselines/violations.json
index a3c20da71..e0827d149 100644
--- a/cypress-accessibility-checker/test/baselines/violations.json
+++ b/cypress-accessibility-checker/test/baselines/violations.json
@@ -1,7 +1,7 @@
 {
     "results": [
         {
-            "ruleId": "WCAG20_Html_HasLang",
+            "ruleId": "html_lang_exists",
             "value": [
                 "VIOLATION",
                 "FAIL"
@@ -27,7 +27,7 @@
             "level": "violation"
         },
         {
-            "ruleId": "WCAG20_Body_FirstASkips_Native_Host_Sematics",
+            "ruleId": "skip_main_exists",
             "value": [
                 "VIOLATION",
                 "FAIL"
@@ -38,7 +38,7 @@
             },
             "ruleTime": 0,
             "reasonId": "Fail_1",
-            "message": "The page does not provide a way to quickly navigate to the main content (WAI-ARIA \"main\" landmark or a skip link)",
+            "message": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)",
             "messageArgs": [],
             "apiArgs": [],
             "bounds": {
@@ -53,7 +53,7 @@
             "level": "violation"
         },
         {
-            "ruleId": "Rpt_Aria_OrphanedContent_Native_Host_Sematics",
+            "ruleId": "aria_content_in_landmark",
             "value": [
                 "VIOLATION",
                 "FAIL"
@@ -79,7 +79,7 @@
             "level": "violation"
         },
         {
-            "ruleId": "WCAG20_Img_HasAlt",
+            "ruleId": "img_alt_valid",
             "value": [
                 "VIOLATION",
                 "FAIL"
@@ -89,8 +89,8 @@
                 "aria": "/document[1]/img[1]"
             },
             "ruleTime": 0,
-            "reasonId": "Fail_2",
-            "message": "Image does not have an 'alt' attribute short text alternative",
+            "reasonId": "fail_no_alt",
+            "message": "The image has neither an alt atttribute nor an ARIA label or title",
             "messageArgs": [],
             "apiArgs": [],
             "bounds": {
@@ -105,80 +105,80 @@
             "level": "violation"
         }
     ],
-    "numExecuted": 68,
+    "numExecuted": 46,
     "nls": {
-        "WCAG20_Html_HasLang": {
+        "html_lang_exists": {
             "0": "Page must identify the default language of the document with a 'lang' attribute",
             "Fail_3": "Page detected as HTML, but does not have a 'lang' attribute"
         },
-        "RPT_Html_SkipNav": {
+        "html_skipnav_exists": {
             "0": "Provide a way to bypass blocks of content that are repeated on multiple Web pages",
             "Pass_0": "Rule Passed"
         },
-        "WCAG20_Doc_HasTitle": {
+        "page_title_exists": {
             "0": "The page should have a title that correctly identifies the subject of the page",
             "Pass_0": "Rule Passed"
         },
-        "HAAC_BackgroundImg_HasTextOrTitle": {
-            "0": "Background images that convey important information must have a text alternative that describes the image",
-            "Pass_0": "Rule Passed"
-        },
-        "RPT_List_UseMarkup": {
-            "0": "Use proper HTML list elements to create lists",
-            "Pass_0": "Rule Passed"
-        },
-        "RPT_Text_SensoryReference": {
-            "0": "Instructions must be meaningful without shape or location words",
-            "Pass_0": "Rule Passed"
-        },
-        "WCAG20_Text_Emoticons": {
+        "emoticons_alt_exists": {
             "0": "Emoticons must have a short text alternative that describes their purpose",
             "Pass_0": "Rule Passed"
         },
-        "WCAG20_Text_LetterSpacing": {
-            "0": "Use CSS 'letter-spacing' to control spacing within a word",
-            "Pass_0": "Rule Passed"
-        },
-        "text_quoted_correctly": {
-            "0": "Quotations should be marked with <q> or <blockquote> elements",
+        "img_alt_background": {
+            "0": "Background images that convey important information must have a text alternative that describes the image",
             "Pass_0": "Rule Passed"
         },
-        "IBMA_Color_Contrast_WCAG2AA_PV": {
-            "0": "The contrast ratio of text with its background (i.e. background with a color gradient or a background image) must meet WCAG 2.1 AA requirements",
+        "list_markup_review": {
+            "0": "Use proper HTML list elements to create lists",
             "Pass_0": "Rule Passed"
         },
-        "Rpt_Aria_OrphanedContent_Native_Host_Sematics": {
+        "aria_content_in_landmark": {
             "0": "All content must reside within an element with a landmark role",
             "Pass_0": "Rule Passed",
             "Fail_1": "Content is not within a landmark element"
         },
-        "RPT_Title_Valid": {
+        "page_title_valid": {
             "0": "Page <title> should be a descriptive title, rather than a filename",
             "Pass_0": "Rule Passed"
         },
-        "WCAG20_Body_FirstASkips_Native_Host_Sematics": {
+        "skip_main_exists": {
             "0": "Pages must provide a way to skip directly to the main content",
-            "Fail_1": "The page does not provide a way to quickly navigate to the main content (WAI-ARIA \"main\" landmark or a skip link)"
+            "Fail_1": "The page does not provide a way to quickly navigate to the main content (ARIA \"main\" landmark or a skip link)"
         },
-        "RPT_Header_HasContent": {
-            "0": "Heading elements must provide descriptive text",
+        "text_sensory_misuse": {
+            "0": "Instructions must be meaningful without shape or location words",
             "Pass_0": "Rule Passed"
         },
-        "IBMA_Color_Contrast_WCAG2AA": {
-            "0": "The contrast ratio of text with its background must meet WCAG 2.1 AA requirements",
+        "text_quoted_correctly": {
+            "0": "Quotations should be marked with <q> or <blockquote> elements",
             "Pass_0": "Rule Passed"
         },
-        "RPT_Headers_FewWords": {
+        "text_whitespace_valid": {
+            "0": "Space characters should not be used to control spacing within a word",
+            "pass": "Rule Passed"
+        },
+        "heading_content_exists": {
+            "0": "Heading elements must provide descriptive text",
+            "Pass_0": "Heading element has descriptive text"
+        },
+        "heading_markup_misuse": {
             "0": "Heading elements must not be used for presentation",
             "Pass_0": "Rule Passed"
         },
-        "WCAG20_Img_HasAlt": {
-            "0": "Images must have an 'alt' attribute with a short text alternative if they convey meaning, or 'alt=\"\" if decorative",
-            "Fail_2": "Image does not have an 'alt' attribute short text alternative"
+        "text_contrast_sufficient": {
+            "0": "The contrast ratio of text with its background must meet WCAG 2.1 AA requirements",
+            "Pass_0": "Rule Passed"
         },
-        "RPT_Img_AltCommonMisuse": {
+        "img_alt_misuse": {
             "0": "'alt' attribute value must be a good inline replacement for the image",
             "Pass_0": "Rule Passed"
+        },
+        "img_alt_valid": {
+            "0": "Images require an 'alt' attribute with a short text alternative if they convey meaning, or 'alt=\"\" if decorative",
+            "fail_no_alt": "The image has neither an alt atttribute nor an ARIA label or title"
+        },
+        "aria_descendant_valid": {
+            "0": "Browsers ignore the explicit and implicit ARIA roles of the descendants of certain elements",
+            "pass": "The element contains valid descendants"
         }
     },
     "summary": {
@@ -187,7 +187,7 @@
             "potentialviolation": 0,
             "ignored": 0
         },
-        "scanTime": 9,
+        "scanTime": 10,
         "ruleArchive": "Latest Deployment (latest)",
         "policies": [
             "IBM_Accessibility"
@@ -196,10 +196,10 @@
             "violation",
             "potentialviolation"
         ],
-        "startScan": 1601305146918,
+        "startScan": 1684344654747,
         "URL": "http://localhost:8080/test/sample-html/violations.html"
     },
-    "scanID": "25bdec16-c677-4773-afdb-56319dffc0b7",
+    "scanID": "155b5277-dee6-44a8-a591-9d6fad5241c4",
     "toolID": "cypress-accessibility-checker-v3.0.0",
     "label": "violations"
 }
\ No newline at end of file
diff --git a/report-react/package-lock.json b/report-react/package-lock.json
index 98ca65875..bbe0d232a 100644
--- a/report-react/package-lock.json
+++ b/report-react/package-lock.json
@@ -17,7 +17,7 @@
       },
       "devDependencies": {
         "@types/jest": "^27.4.1",
-        "@types/node": "^16.11.27",
+        "@types/node": "^18.15.3",
         "@types/react": "^18.0.5",
         "@types/react-dom": "^18.0.1",
         "gulp": "^4.0.2",
@@ -3597,9 +3597,9 @@
       "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
     },
     "node_modules/@types/node": {
-      "version": "16.11.39",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.39.tgz",
-      "integrity": "sha512-K0MsdV42vPwm9L6UwhIxMAOmcvH/1OoVkZyCgEtVu4Wx7sElGloy/W7kMBNe/oJ7V/jW9BVt1F6RahH6e7tPXw=="
+      "version": "18.16.12",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.12.tgz",
+      "integrity": "sha512-tIRrjbY9C277MOfP8M3zjMIhtMlUJ6YVqkGgLjz+74jVsdf4/UjC6Hku4+1N0BS0qyC0JAS6tJLUk9H6JUKviQ=="
     },
     "node_modules/@types/parse-json": {
       "version": "4.0.0",
@@ -22510,9 +22510,9 @@
       "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
     },
     "@types/node": {
-      "version": "16.11.39",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.39.tgz",
-      "integrity": "sha512-K0MsdV42vPwm9L6UwhIxMAOmcvH/1OoVkZyCgEtVu4Wx7sElGloy/W7kMBNe/oJ7V/jW9BVt1F6RahH6e7tPXw=="
+      "version": "18.16.12",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.12.tgz",
+      "integrity": "sha512-tIRrjbY9C277MOfP8M3zjMIhtMlUJ6YVqkGgLjz+74jVsdf4/UjC6Hku4+1N0BS0qyC0JAS6tJLUk9H6JUKviQ=="
     },
     "@types/parse-json": {
       "version": "4.0.0",
diff --git a/report-react/package.json b/report-react/package.json
index 1c948d5cf..b23b7708f 100644
--- a/report-react/package.json
+++ b/report-react/package.json
@@ -36,7 +36,7 @@
   },
   "devDependencies": {
     "@types/jest": "^27.4.1",
-    "@types/node": "^16.11.27",
+    "@types/node": "^18.15.3",
     "@types/react": "^18.0.5",
     "@types/react-dom": "^18.0.1",
     "gulp": "^4.0.2",
diff --git a/rule-server/package-lock.json b/rule-server/package-lock.json
index ca9f18304..425f34fc8 100644
--- a/rule-server/package-lock.json
+++ b/rule-server/package-lock.json
@@ -22,13 +22,13 @@
                 "uuid": "^8.3.2"
             },
             "devDependencies": {
-                "@types/node": "^16.10.2",
+                "@types/node": "^18.15.3",
                 "cross-env": "^7.0.3",
                 "express-http-proxy": "^1.6.3",
                 "gulp": "^4.0.2",
                 "gulp-modify-file": "^1.0.1",
                 "nano": "^9.0.5",
-                "pem": "^1.14.4",
+                "pem": "^1.14.7",
                 "shx": "^0.3.3",
                 "ts-node": "^10.4.0"
             },
@@ -334,9 +334,9 @@
             "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w=="
         },
         "node_modules/@types/node": {
-            "version": "16.11.33",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz",
-            "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA=="
+            "version": "18.16.12",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.12.tgz",
+            "integrity": "sha512-tIRrjbY9C277MOfP8M3zjMIhtMlUJ6YVqkGgLjz+74jVsdf4/UjC6Hku4+1N0BS0qyC0JAS6tJLUk9H6JUKviQ=="
         },
         "node_modules/@types/request": {
             "version": "2.48.8",
@@ -2006,10 +2006,13 @@
             "dev": true
         },
         "node_modules/es6-promisify": {
-            "version": "6.1.1",
-            "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz",
-            "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==",
-            "dev": true
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz",
+            "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
         },
         "node_modules/es6-symbol": {
             "version": "3.1.3",
@@ -5451,18 +5454,18 @@
             }
         },
         "node_modules/pem": {
-            "version": "1.14.6",
-            "resolved": "https://registry.npmjs.org/pem/-/pem-1.14.6.tgz",
-            "integrity": "sha512-I5GKUer2PPv5qzUfxaZ6IGRkhp+357Kyv2t1JJg9vP8hGGI13qU34N2QupmggbpIZGPuudH0jn8KU5hjFpPk3g==",
+            "version": "1.14.7",
+            "resolved": "https://registry.npmjs.org/pem/-/pem-1.14.7.tgz",
+            "integrity": "sha512-tN5+bp2/Yh/2yuv/JFXXHXrd5RVfsEBwlV7BshuYPX0OJWbR/MeAr89CKWcIp/W0cEnaTPT44haXyaEz1T6XeA==",
             "dev": true,
             "dependencies": {
-                "es6-promisify": "^6.0.0",
-                "md5": "^2.2.1",
-                "os-tmpdir": "^1.0.1",
+                "es6-promisify": "^7.0.0",
+                "md5": "^2.3.0",
+                "os-tmpdir": "^1.0.2",
                 "which": "^2.0.2"
             },
             "engines": {
-                "node": ">=6.0.0"
+                "node": ">=14.0.0"
             }
         },
         "node_modules/performance-now": {
@@ -7734,9 +7737,9 @@
             "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w=="
         },
         "@types/node": {
-            "version": "16.11.33",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.33.tgz",
-            "integrity": "sha512-0PJ0vg+JyU0MIan58IOIFRtSvsb7Ri+7Wltx2qAg94eMOrpg4+uuP3aUHCpxXc1i0jCXiC+zIamSZh3l9AbcQA=="
+            "version": "18.16.12",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.12.tgz",
+            "integrity": "sha512-tIRrjbY9C277MOfP8M3zjMIhtMlUJ6YVqkGgLjz+74jVsdf4/UjC6Hku4+1N0BS0qyC0JAS6tJLUk9H6JUKviQ=="
         },
         "@types/request": {
             "version": "2.48.8",
@@ -9066,9 +9069,9 @@
             "dev": true
         },
         "es6-promisify": {
-            "version": "6.1.1",
-            "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz",
-            "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==",
+            "version": "7.0.0",
+            "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz",
+            "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==",
             "dev": true
         },
         "es6-symbol": {
@@ -11780,14 +11783,14 @@
             }
         },
         "pem": {
-            "version": "1.14.6",
-            "resolved": "https://registry.npmjs.org/pem/-/pem-1.14.6.tgz",
-            "integrity": "sha512-I5GKUer2PPv5qzUfxaZ6IGRkhp+357Kyv2t1JJg9vP8hGGI13qU34N2QupmggbpIZGPuudH0jn8KU5hjFpPk3g==",
+            "version": "1.14.7",
+            "resolved": "https://registry.npmjs.org/pem/-/pem-1.14.7.tgz",
+            "integrity": "sha512-tN5+bp2/Yh/2yuv/JFXXHXrd5RVfsEBwlV7BshuYPX0OJWbR/MeAr89CKWcIp/W0cEnaTPT44haXyaEz1T6XeA==",
             "dev": true,
             "requires": {
-                "es6-promisify": "^6.0.0",
-                "md5": "^2.2.1",
-                "os-tmpdir": "^1.0.1",
+                "es6-promisify": "^7.0.0",
+                "md5": "^2.3.0",
+                "os-tmpdir": "^1.0.2",
                 "which": "^2.0.2"
             }
         },
diff --git a/rule-server/package.json b/rule-server/package.json
index 67d1b10c3..884a4e959 100644
--- a/rule-server/package.json
+++ b/rule-server/package.json
@@ -27,13 +27,13 @@
         "uuid": "^8.3.2"
     },
     "devDependencies": {
-        "@types/node": "^16.10.2",
+        "@types/node": "^18.15.3",
         "cross-env": "^7.0.3",
         "express-http-proxy": "^1.6.3",
         "gulp": "^4.0.2",
         "gulp-modify-file": "^1.0.1",
         "nano": "^9.0.5",
-        "pem": "^1.14.4",
+        "pem": "^1.14.7",
         "shx": "^0.3.3",
         "ts-node": "^10.4.0"
     },