From a12989766ac8714c7a7b8f288b22575a35ce2575 Mon Sep 17 00:00:00 2001 From: cole-liferay Date: Thu, 21 Feb 2019 13:15:23 -0800 Subject: [PATCH 01/19] Update liferay_portal_6_1.hbs --- .../resources/templates/category_pages/liferay_portal_6_1.hbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/theme/src/resources/templates/category_pages/liferay_portal_6_1.hbs b/theme/src/resources/templates/category_pages/liferay_portal_6_1.hbs index a2b51235..d5196a05 100644 --- a/theme/src/resources/templates/category_pages/liferay_portal_6_1.hbs +++ b/theme/src/resources/templates/category_pages/liferay_portal_6_1.hbs @@ -30,7 +30,7 @@ Liferay.ProductTabs, { alert: { - children: '{{dc '6_1-info_banner'}}', + children: '{{dc '6_1-end_of_life_banner'}}', leadingText: '{{dc '6_2-info'}}', linkText: '{{dc 'homepage-learn_more'}}', url: '/hc/articles/360021287972' @@ -228,4 +228,4 @@ document.getElementById('portal61ProductPage') ); }); - \ No newline at end of file + From 36e19f319b6e05834ebc55b3d31f82654c900259 Mon Sep 17 00:00:00 2001 From: Rebecca Dai Date: Wed, 13 Feb 2019 10:11:20 -0800 Subject: [PATCH 02/19] LHC-186 update code styling --- theme/src/css/_zendesk-article.scss | 6 ++++-- theme/src/css/_zendesk-variables.scss | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/theme/src/css/_zendesk-article.scss b/theme/src/css/_zendesk-article.scss index e99555f1..3cb18b0f 100644 --- a/theme/src/css/_zendesk-article.scss +++ b/theme/src/css/_zendesk-article.scss @@ -41,11 +41,13 @@ pre { border-radius: $border-radius; font-family: "Roboto Mono", SFMono-Regular, monospace; + font-size: $code-font-size; + line-height: $code-line-height; } code { - background-color: $code-text-background-color; - padding: 0.25rem; + background-color: $color-divider; + padding: 0.125rem 0.25rem; } pre { diff --git a/theme/src/css/_zendesk-variables.scss b/theme/src/css/_zendesk-variables.scss index 2dd37cbe..a2d2390a 100644 --- a/theme/src/css/_zendesk-variables.scss +++ b/theme/src/css/_zendesk-variables.scss @@ -27,7 +27,6 @@ $color-grey-focus: #F0F1F2 !default; $color-grey-hover: #F2F4F5 !default; $color-white: #FFF !default; -$code-text-background-color: #FDEFF6 !default; $pre-text-color: #F8FAFF !default; $secondary-text-color: #5B6170 !default; @@ -49,6 +48,8 @@ $h4-font-size: 1rem !default; // 16px $h5-font-size: 0.875rem !default; // 14px $h6-font-size: $small-font-size !default; // 12px +$code-font-size: 14px !default; // set pixel value to prevent nested
 and  from scaling down font size
+
 $line-height-sm: 1.333 !default; // 18px
 
 $alert-info-bg: $color-info-background !default;
@@ -118,6 +119,8 @@ $h6-line-height: 16px !default;
 
 $font-size-default: 1rem !default; // 16px
 
+$code-line-height: 24px !default; // set pixel value to prevent nested 
 and  from scaling down line height
+
 $label-sm: (
 	font-size: 0.625rem, // 10px
 	height: 1rem, // 16px

From e34d312674a8b939ccd19f1c6af42a27efb12d7e Mon Sep 17 00:00:00 2001
From: cole-liferay 
Date: Fri, 22 Feb 2019 10:39:36 -0800
Subject: [PATCH 03/19] Update Latest Release link on Commerce Page

---
 .../src/resources/templates/category_pages/liferay_commerce.hbs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/theme/src/resources/templates/category_pages/liferay_commerce.hbs b/theme/src/resources/templates/category_pages/liferay_commerce.hbs
index 3e8143d7..dc1a88ae 100644
--- a/theme/src/resources/templates/category_pages/liferay_commerce.hbs
+++ b/theme/src/resources/templates/category_pages/liferay_commerce.hbs
@@ -37,7 +37,7 @@
 								description: '{{dc 'commerce-latest_release_card_description'}}',
 								name: '{{dc '7_1-latest_release_card'}}',
 								svgId: '#latest-release',
-								url: 'https://customer.liferay.com/downloads?p_p_id=com_liferay_osb_customer_downloads_display_web_DownloadsDisplayPortlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&_com_liferay_osb_customer_downloads_display_web_DownloadsDisplayPortlet_mvcRenderCommandName=%2Fview&_com_liferay_osb_customer_downloads_display_web_DownloadsDisplayPortlet_journalArticleResourcePrimKey=118191628'
+								url: 'https://customer.liferay.com/downloads?p_p_id=com_liferay_osb_customer_downloads_display_web_DownloadsDisplayPortlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&_com_liferay_osb_customer_downloads_display_web_DownloadsDisplayPortlet_mvcRenderCommandName=%2Fview&_com_liferay_osb_customer_downloads_display_web_DownloadsDisplayPortlet_journalArticleResourcePrimKey=118250141'
 							},
 							{
 								description: '{{dc 'commerce-compatibility_matrix_card_description'}}',

From 894c737f384e91a9e3deee012495170635d906a8 Mon Sep 17 00:00:00 2001
From: Rebecca Dai 
Date: Fri, 15 Feb 2019 17:09:35 -0800
Subject: [PATCH 04/19] LHC-73 introduce testing library and swap out
 preact-render-to-string

---
 theme/package-lock.json                       | 231 ++++++++++++++----
 theme/package.json                            |   8 +-
 theme/src/js/components/__tests__/Alert.js    |  12 +-
 .../js/components/__tests__/CallToAction.js   |  38 +--
 .../components/__tests__/LoadingIndicator.js  |   8 +-
 .../src/js/components/__tests__/Pagination.js |  12 +-
 .../js/components/__tests__/ProductTabs.js    |  24 +-
 .../js/components/__tests__/SearchFilter.js   |  10 +-
 .../js/components/__tests__/SearchResults.js  |   8 +-
 9 files changed, 247 insertions(+), 104 deletions(-)

diff --git a/theme/package-lock.json b/theme/package-lock.json
index 607a67dd..f46ac1f1 100644
--- a/theme/package-lock.json
+++ b/theme/package-lock.json
@@ -898,6 +898,15 @@
         }
       }
     },
+    "@babel/runtime": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz",
+      "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==",
+      "dev": true,
+      "requires": {
+        "regenerator-runtime": "^0.12.0"
+      }
+    },
     "@babel/template": {
       "version": "7.2.2",
       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
@@ -964,6 +973,12 @@
         "glob-to-regexp": "^0.3.0"
       }
     },
+    "@sheerun/mutationobserver-shim": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz",
+      "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==",
+      "dev": true
+    },
     "@sindresorhus/is": {
       "version": "0.7.0",
       "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
@@ -1841,6 +1856,17 @@
       "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=",
       "dev": true
     },
+    "babel-plugin-module-resolver": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-2.7.1.tgz",
+      "integrity": "sha1-GL48Qt31n3pFbJ4FEs2ROU9uS+E=",
+      "dev": true,
+      "requires": {
+        "find-babel-config": "^1.0.1",
+        "glob": "^7.1.1",
+        "resolve": "^1.2.0"
+      }
+    },
     "babel-plugin-syntax-async-functions": {
       "version": "6.13.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
@@ -4090,6 +4116,51 @@
         "esutils": "^2.0.2"
       }
     },
+    "dom-testing-library": {
+      "version": "3.16.8",
+      "resolved": "https://registry.npmjs.org/dom-testing-library/-/dom-testing-library-3.16.8.tgz",
+      "integrity": "sha512-VGn2piehGoN9lmZDYd+xoTZwwcS+FoXebvZMw631UhS5LshiLTFNJs9bxRa9W7fVb1cAn9AYKAKZXh67rCDaqw==",
+      "dev": true,
+      "requires": {
+        "@babel/runtime": "^7.1.5",
+        "@sheerun/mutationobserver-shim": "^0.3.2",
+        "pretty-format": "^24.0.0",
+        "wait-for-expect": "^1.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
+          "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "pretty-format": {
+          "version": "24.0.0",
+          "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.0.0.tgz",
+          "integrity": "sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.0.0",
+            "ansi-styles": "^3.2.0"
+          }
+        },
+        "wait-for-expect": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-1.1.0.tgz",
+          "integrity": "sha512-vQDokqxyMyknfX3luCDn16bSaRcOyH6gGuUXMIbxBLeTo6nWuEWYqMTT9a+44FmW8c2m6TRWBdNvBBjA1hwEKg==",
+          "dev": true
+        }
+      }
+    },
     "domain-browser": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
@@ -4969,6 +5040,24 @@
         }
       }
     },
+    "find-babel-config": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.1.0.tgz",
+      "integrity": "sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U=",
+      "dev": true,
+      "requires": {
+        "json5": "^0.5.1",
+        "path-exists": "^3.0.0"
+      },
+      "dependencies": {
+        "path-exists": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+          "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+          "dev": true
+        }
+      }
+    },
     "find-cache-dir": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
@@ -6248,15 +6337,6 @@
       "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
       "dev": true
     },
-    "html": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/html/-/html-1.0.0.tgz",
-      "integrity": "sha1-pUT6nqVJK/s6LMqCEKEL57WvH2E=",
-      "dev": true,
-      "requires": {
-        "concat-stream": "^1.4.7"
-      }
-    },
     "html-comment-regex": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
@@ -6272,12 +6352,6 @@
         "whatwg-encoding": "^1.0.1"
       }
     },
-    "html-tags": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz",
-      "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=",
-      "dev": true
-    },
     "http-cache-semantics": {
       "version": "3.8.1",
       "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
@@ -6764,15 +6838,6 @@
         "is-extglob": "^2.1.1"
       }
     },
-    "is-html": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz",
-      "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=",
-      "dev": true,
-      "requires": {
-        "html-tags": "^1.0.0"
-      }
-    },
     "is-number": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
@@ -7671,6 +7736,80 @@
       "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==",
       "dev": true
     },
+    "jest-dom": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/jest-dom/-/jest-dom-2.1.1.tgz",
+      "integrity": "sha512-jE1LRnP/wVGdQy6sVJ+dPwMq6rXXuvYTnzWEb8hDwfxhQesoaaukJzZaZYi14JPpdmhrncdpUsZpagN7HjuTsw==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.1",
+        "css": "^2.2.3",
+        "jest-diff": "^23.6.0",
+        "jest-matcher-utils": "^23.6.0",
+        "lodash": "^4.17.11",
+        "pretty-format": "^23.6.0",
+        "redent": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "indent-string": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+          "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+          "dev": true
+        },
+        "redent": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
+          "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
+          "dev": true,
+          "requires": {
+            "indent-string": "^3.0.0",
+            "strip-indent": "^2.0.0"
+          }
+        },
+        "strip-indent": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+          "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
     "jest-each": {
       "version": "23.6.0",
       "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz",
@@ -8561,16 +8700,6 @@
       "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=",
       "dev": true
     },
-    "jest-serializer-html-string": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/jest-serializer-html-string/-/jest-serializer-html-string-1.0.1.tgz",
-      "integrity": "sha1-aIplno0EjNfTyAP/QIuFFvn7M60=",
-      "dev": true,
-      "requires": {
-        "html": "^1.0.0",
-        "is-html": "^1.1.0"
-      }
-    },
     "jest-snapshot": {
       "version": "23.6.0",
       "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz",
@@ -11678,21 +11807,17 @@
       "resolved": "https://registry.npmjs.org/preact/-/preact-8.2.9.tgz",
       "integrity": "sha512-ThuGXBmJS3VsT+jIP+eQufD3L8pRw/PY3FoCys6O9Pu6aF12Pn9zAJDX99TfwRAFOCEKm/P0lwiPTbqKMJp0fA=="
     },
-    "preact-render-to-string": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-4.1.0.tgz",
-      "integrity": "sha512-FlFBJRxo8z4cp6VsDmeYjIEx4ZK2clFJnKIvIj8K1IQCRm7ZgJ/SZ1+BotT86/Nc+V1pNtFabHoUi6gpjx5Pug==",
+    "preact-testing-library": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/preact-testing-library/-/preact-testing-library-0.3.0.tgz",
+      "integrity": "sha512-KS2/NyBr7aq3u04Q+s/3kOgMU5vpGro3tfGYX5iVDdBDrGl+ZSHPwuP0XLB8pZrHyPHCAXai/Grljgc0hnWE9w==",
       "dev": true,
       "requires": {
-        "pretty-format": "^3.8.0"
-      },
-      "dependencies": {
-        "pretty-format": {
-          "version": "3.8.0",
-          "resolved": "http://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz",
-          "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=",
-          "dev": true
-        }
+        "@babel/runtime": "^7.1.5",
+        "babel-plugin-module-resolver": "^2.7.1",
+        "dom-testing-library": "^3.12.0",
+        "jest-dom": "^2.1.0",
+        "wait-for-expect": "0.4.0"
       }
     },
     "prelude-ls": {
@@ -12326,6 +12451,12 @@
         }
       }
     },
+    "regenerator-runtime": {
+      "version": "0.12.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
+      "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==",
+      "dev": true
+    },
     "regenerator-transform": {
       "version": "0.13.3",
       "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz",
@@ -14323,6 +14454,12 @@
         "browser-process-hrtime": "^0.1.2"
       }
     },
+    "wait-for-expect": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-0.4.0.tgz",
+      "integrity": "sha512-itHoJUKL5P8abjhWRlp3F5QLDY7LokcJkgD78tjrX08ozBakfy9YD4bgxUVuSld8yqjza3ld6Sj7UMMOH/twFA==",
+      "dev": true
+    },
     "walker": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
diff --git a/theme/package.json b/theme/package.json
index ba1482d4..f7f5fa74 100644
--- a/theme/package.json
+++ b/theme/package.json
@@ -41,13 +41,12 @@
 		"eslint-plugin-prettier": "^2.6.0",
 		"glob-all": "^3.1.0",
 		"jest": "^23.6.0",
-		"jest-serializer-html-string": "^1.0.1",
 		"mini-css-extract-plugin": "^0.4.0",
 		"node-sass": "^4.11.0",
 		"optimize-css-assets-webpack-plugin": "^4.0.1",
 		"postcss-loader": "^2.1.5",
 		"preact": "^8.2.9",
-		"preact-render-to-string": "^4.1.0",
+		"preact-testing-library": "^0.3.0",
 		"prettier": "^1.12.1",
 		"prop-types": "^15.6.2",
 		"purify-css": "^1.2.5",
@@ -91,11 +90,6 @@
 			]
 		}
 	},
-	"jest": {
-		"snapshotSerializers": [
-			"jest-serializer-html-string"
-		]
-	},
 	"name": "liferay-zendesk-theme",
 	"prettier": {
 		"bracketSpacing": false,
diff --git a/theme/src/js/components/__tests__/Alert.js b/theme/src/js/components/__tests__/Alert.js
index 890f6591..3f98803c 100644
--- a/theme/src/js/components/__tests__/Alert.js
+++ b/theme/src/js/components/__tests__/Alert.js
@@ -1,18 +1,20 @@
 import preact from 'preact';
-import render from 'preact-render-to-string';
+import {cleanup, render} from 'preact-testing-library';
 
 import Alert from '../Alert';
 
+afterEach(cleanup);
+
 describe('Alert', () => {
 	it('renders correctly', () => {
-		const tree = render(Alert);
+		const {container} = render(Alert);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with leading text', () => {
-		const tree = render(Alert);
+		const {container} = render(Alert);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 });
\ No newline at end of file
diff --git a/theme/src/js/components/__tests__/CallToAction.js b/theme/src/js/components/__tests__/CallToAction.js
index e2318d1f..df3b3847 100644
--- a/theme/src/js/components/__tests__/CallToAction.js
+++ b/theme/src/js/components/__tests__/CallToAction.js
@@ -1,5 +1,5 @@
 import preact from 'preact';
-import render from 'preact-render-to-string';
+import {render} from 'preact-testing-library';
 
 import CallToAction from '../CallToAction';
 
@@ -16,46 +16,46 @@ describe('CallToAction', () => {
 	];
 
 	it('renders correctly', () => {
-		const tree = render();
+		const {container} = render();
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with class name', () => {
-		const tree = render(
+		const {container} = render(
 			
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with section heading', () => {
-		const tree = render(
+		const {container} = render(
 			
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with section heading', () => {
-		const tree = render(
+		const {container} = render(
 			
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with disclaimer text', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with an icon', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with a message', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with promotions', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with promotions containing description', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 });
\ No newline at end of file
diff --git a/theme/src/js/components/__tests__/LoadingIndicator.js b/theme/src/js/components/__tests__/LoadingIndicator.js
index aad10e6b..32e8d07b 100644
--- a/theme/src/js/components/__tests__/LoadingIndicator.js
+++ b/theme/src/js/components/__tests__/LoadingIndicator.js
@@ -1,12 +1,14 @@
 import preact from 'preact';
-import render from 'preact-render-to-string';
+import {cleanup, render} from 'preact-testing-library';
 
 import LoadingIndicator from '../LoadingIndicator';
 
+afterEach(cleanup);
+
 describe('LoadingIndicator', () => {
 	it('renders correctly', () => {
-		const tree = render();
+		const {container} = render();
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 });
\ No newline at end of file
diff --git a/theme/src/js/components/__tests__/Pagination.js b/theme/src/js/components/__tests__/Pagination.js
index 42c0a5bc..1234b3b1 100644
--- a/theme/src/js/components/__tests__/Pagination.js
+++ b/theme/src/js/components/__tests__/Pagination.js
@@ -1,16 +1,18 @@
 import preact from 'preact';
-import render from 'preact-render-to-string';
+import {cleanup, render} from 'preact-testing-library';
 
 import Pagination from '../Pagination';
 
+afterEach(cleanup);
+
 describe('Pagination', () => {
 	it('renders correctly', () => {
-		const handleOnclick = () => console.log('clicked');
+		const handleClick = jest.fn();
 
-		const tree = render(
-			
+		const {container} = render(
+			
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 });
\ No newline at end of file
diff --git a/theme/src/js/components/__tests__/ProductTabs.js b/theme/src/js/components/__tests__/ProductTabs.js
index e1eaa9a7..b7a58553 100644
--- a/theme/src/js/components/__tests__/ProductTabs.js
+++ b/theme/src/js/components/__tests__/ProductTabs.js
@@ -1,8 +1,10 @@
 import preact from 'preact';
-import render from 'preact-render-to-string';
+import {cleanup, render} from 'preact-testing-library';
 
 import ProductTabs from '../ProductTabs';
 
+afterEach(cleanup);
+
 describe('ProductTabs', () => {
 	const productItems = [
 		{
@@ -64,21 +66,21 @@ describe('ProductTabs', () => {
 	];
 
 	it('renders correctly with KB tabs and all access tabs', () => {
-		const tree = render(
+		const {container} = render(
 			
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders correctly non KB tabs and all access tabs', () => {
-		const tree = render();
+		const {container} = render();
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with simple text Alert', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with simple text Alert with leading text', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 
 	it('renders with text and link in Alert', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 });
\ No newline at end of file
diff --git a/theme/src/js/components/__tests__/SearchFilter.js b/theme/src/js/components/__tests__/SearchFilter.js
index d0376ac3..d6be3dc3 100644
--- a/theme/src/js/components/__tests__/SearchFilter.js
+++ b/theme/src/js/components/__tests__/SearchFilter.js
@@ -1,8 +1,10 @@
 import preact from 'preact';
-import render from 'preact-render-to-string';
+import {cleanup, render} from 'preact-testing-library';
 
 import SearchFilter from '../SearchFilter';
 
+afterEach(cleanup);
+
 describe('SearchFilter', () => {
 	const options = [
 		{
@@ -16,14 +18,14 @@ describe('SearchFilter', () => {
 	];
 
 	it('renders correctly', () => {
-		const tree = render(
+		const {container} = render(
 			 console.log('clicked')}
+				onClick={jest.fn()}
 				options={options}
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 });
diff --git a/theme/src/js/components/__tests__/SearchResults.js b/theme/src/js/components/__tests__/SearchResults.js
index 330d1de1..70dad11b 100644
--- a/theme/src/js/components/__tests__/SearchResults.js
+++ b/theme/src/js/components/__tests__/SearchResults.js
@@ -1,8 +1,10 @@
 import preact from 'preact';
-import render from 'preact-render-to-string';
+import {cleanup, render} from 'preact-testing-library';
 
 import SearchResults from '../SearchResults';
 
+afterEach(cleanup);
+
 describe('SearchResults', () => {
 	const filterOptions = [
 		{displayName: 'Option 1', value: 'one'},
@@ -10,7 +12,7 @@ describe('SearchResults', () => {
 	];
 
 	it('renders correctly', () => {
-		const tree = render(
+		const {container} = render(
 			 {
 			/>
 		);
 
-		expect(tree).toMatchSnapshot();
+		expect(container).toMatchSnapshot();
 	});
 });
\ No newline at end of file

From 2e616aff5dc166824c96c328bdd16d35064398f1 Mon Sep 17 00:00:00 2001
From: Rebecca Dai 
Date: Fri, 15 Feb 2019 17:41:11 -0800
Subject: [PATCH 05/19] LHC-73 add test for DocSideNav

---
 theme/src/js/components/__tests__/DocSideNav.js | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 theme/src/js/components/__tests__/DocSideNav.js

diff --git a/theme/src/js/components/__tests__/DocSideNav.js b/theme/src/js/components/__tests__/DocSideNav.js
new file mode 100644
index 00000000..ddd20fad
--- /dev/null
+++ b/theme/src/js/components/__tests__/DocSideNav.js
@@ -0,0 +1,16 @@
+import preact from 'preact';
+import {cleanup, render} from 'preact-testing-library';
+
+import DocSideNav from '../DocSideNav';
+
+afterEach(cleanup);
+
+describe('DocSideNav', () => {
+	it('renders correctly', () => {
+		const {container} = render(
+			
+		);
+
+		expect(container).toMatchSnapshot();
+	});
+});
\ No newline at end of file

From 5b1ae21016dc1938b9d5d31441fa3b9d086aca63 Mon Sep 17 00:00:00 2001
From: Rebecca Dai 
Date: Wed, 20 Feb 2019 11:14:50 -0800
Subject: [PATCH 06/19] LHC-73 add accessibility attribute to components with
 SVG

---
 theme/src/js/components/Alert.js        | 2 +-
 theme/src/js/components/CallToAction.js | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/theme/src/js/components/Alert.js b/theme/src/js/components/Alert.js
index c5ab071e..08474ea3 100644
--- a/theme/src/js/components/Alert.js
+++ b/theme/src/js/components/Alert.js
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
 const Alert = ({children, leadingText}) => (