diff --git a/packages/@lwc/integration-karma/test/component/default-export/index.spec.js b/packages/@lwc/integration-karma/test/component/default-export/index.spec.js
index 6c7410b8cd..7849553f37 100644
--- a/packages/@lwc/integration-karma/test/component/default-export/index.spec.js
+++ b/packages/@lwc/integration-karma/test/component/default-export/index.spec.js
@@ -1,6 +1,13 @@
import Component from 'x/component';
import { createElement } from 'lwc';
import { extractDataIds } from 'test-utils';
+import ExportAsDefault from 'x/exportAsDefault';
+import ExportAsDefaultWithOtherExports, {
+ exportee as exporteeAsDefault,
+} from 'x/exportAsDefaultWithOtherExports';
+import ExportDefaultClassWithOtherExports, {
+ exportee as exporteeDefaultClass,
+} from 'x/exportDefaultClassWithOtherExports';
describe('default export', () => {
it('should work when a module exports non-components as default', () => {
@@ -13,4 +20,33 @@ describe('default export', () => {
expect(nodes.zero.textContent).toEqual('0');
expect(nodes.string.textContent).toEqual('"bar"');
});
+
+ it('should work with `export default class` syntax and other exports', async () => {
+ expect(exporteeDefaultClass).toBe('foo');
+ const elm = createElement('x-export-default-class-with-other-exports', {
+ is: ExportDefaultClassWithOtherExports,
+ });
+ document.body.appendChild(elm);
+ await Promise.resolve();
+ expect(elm.shadowRoot.querySelector('h1').textContent).toBe('hello world');
+ });
+
+ // TODO [#4020]: support additional syntax for default export
+ xit('should work with `export { ... as default }` syntax', async () => {
+ const elm = createElement('x-export-as-default', { is: ExportAsDefault });
+ document.body.appendChild(elm);
+ await Promise.resolve();
+ expect(elm.shadowRoot.querySelector('h1').textContent).toBe('hello world');
+ });
+
+ // TODO [#4020]: support additional syntax for default export
+ xit('should work with `export { ... as default }` syntax and other exports', async () => {
+ expect(exporteeAsDefault).toBe('foo');
+ const elm = createElement('x-export-as-default-with-other-exports', {
+ is: ExportAsDefaultWithOtherExports,
+ });
+ document.body.appendChild(elm);
+ await Promise.resolve();
+ expect(elm.shadowRoot.querySelector('h1').textContent).toBe('hello world');
+ });
});
diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.html b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.html
new file mode 100644
index 0000000000..c60ec17d7c
--- /dev/null
+++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.html
@@ -0,0 +1,3 @@
+
+ hello world
+
diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.js b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.js
new file mode 100644
index 0000000000..8d30934569
--- /dev/null
+++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefault/exportAsDefault.js
@@ -0,0 +1,5 @@
+import { LightningElement } from 'lwc';
+
+class ExportAsDefault extends LightningElement {}
+
+export { ExportAsDefault as default };
diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.html b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.html
new file mode 100644
index 0000000000..c60ec17d7c
--- /dev/null
+++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.html
@@ -0,0 +1,3 @@
+
+ hello world
+
diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.js b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.js
new file mode 100644
index 0000000000..dd0a5d7de9
--- /dev/null
+++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportAsDefaultWithOtherExports/exportAsDefaultWithOtherExports.js
@@ -0,0 +1,7 @@
+import { LightningElement } from 'lwc';
+
+const exportee = 'foo';
+
+class ExportAsDefaultWithOtherExports extends LightningElement {}
+
+export { ExportAsDefaultWithOtherExports as default, exportee };
diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.html b/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.html
new file mode 100644
index 0000000000..c60ec17d7c
--- /dev/null
+++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.html
@@ -0,0 +1,3 @@
+
+ hello world
+
diff --git a/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.js b/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.js
new file mode 100644
index 0000000000..0f3b33f578
--- /dev/null
+++ b/packages/@lwc/integration-karma/test/component/default-export/x/exportDefaultClassWithOtherExports/exportDefaultClassWithOtherExports.js
@@ -0,0 +1,7 @@
+import { LightningElement } from 'lwc';
+
+const exportee = 'foo';
+
+export default class ExportDefaultClassWithOtherExports extends LightningElement {}
+
+export { exportee };