diff --git a/test/js/samples/attribute-expression/expected.js b/test/js/samples/attribute-expression/expected.js
deleted file mode 100644
index ee87efaeca..0000000000
--- a/test/js/samples/attribute-expression/expected.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/* generated by Svelte vX.Y.Z */
-import { SvelteComponent as SvelteComponent_1, createComment, createElement, destroyEach, detachNode, init, insert, noop, safe_not_equal, setAttribute } from "svelte/internal";
-
-function get_each_context(ctx, list, i) {
- const child_ctx = Object.create(ctx);
- child_ctx.item = list[i];
- return child_ctx;
-}
-
-// (1:0) {#each Array(1) as item}
-function create_each_block(ctx) {
- var boo;
-
- function func() {
- return ctx.func(ctx);
- }
-
- return {
- c() {
- boo = createElement("boo");
- setAttribute(boo, "cb", func);
- },
-
- m(target, anchor) {
- insert(target, boo, anchor);
- },
-
- p(changed, new_ctx) {
- ctx = new_ctx;
- },
-
- d(detach) {
- if (detach) {
- detachNode(boo);
- }
- }
- };
-}
-
-function create_fragment(ctx) {
- var each_anchor;
-
- var each_value = Array(1);
-
- var each_blocks = [];
-
- for (var i = 0; i < each_value.length; i += 1) {
- each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
- }
-
- return {
- c() {
- for (var i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].c();
- }
-
- each_anchor = createComment();
- },
-
- m(target, anchor) {
- for (var i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].m(target, anchor);
- }
-
- insert(target, each_anchor, anchor);
- },
-
- p: noop,
- i: noop,
- o: noop,
-
- d(detach) {
- destroyEach(each_blocks, detach);
-
- if (detach) {
- detachNode(each_anchor);
- }
- }
- };
-}
-
-function instance($$self) {
- function func({ item }) {
- return item;
- }
-
- return { func };
-}
-
-class SvelteComponent extends SvelteComponent_1 {
- constructor(options) {
- super();
- init(this, options, instance, create_fragment, safe_not_equal);
- }
-}
-
-export default SvelteComponent;
diff --git a/test/js/samples/attribute-expression/input.svelte b/test/js/samples/attribute-expression/input.svelte
deleted file mode 100644
index 50be0bee3f..0000000000
--- a/test/js/samples/attribute-expression/input.svelte
+++ /dev/null
@@ -1,3 +0,0 @@
-{#each Array(1) as item}
-
-{/each}
diff --git a/test/runtime/samples/contextual-callback/Widget.svelte b/test/runtime/samples/contextual-callback/Widget.svelte
new file mode 100644
index 0000000000..283208ccf9
--- /dev/null
+++ b/test/runtime/samples/contextual-callback/Widget.svelte
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/contextual-callback/_config.js b/test/runtime/samples/contextual-callback/_config.js
new file mode 100644
index 0000000000..d47d9d001e
--- /dev/null
+++ b/test/runtime/samples/contextual-callback/_config.js
@@ -0,0 +1,12 @@
+export default {
+ html: ``,
+
+ async test({ assert, component, target, window }) {
+ const button = target.querySelector('button');
+ const click = new window.MouseEvent('click');
+
+ await button.dispatchEvent(click);
+
+ assert.equal(component.clicked, 'x');
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/contextual-callback/main.svelte b/test/runtime/samples/contextual-callback/main.svelte
new file mode 100644
index 0000000000..1ae9f8aee8
--- /dev/null
+++ b/test/runtime/samples/contextual-callback/main.svelte
@@ -0,0 +1,9 @@
+
+
+{#each ['x'] as letter}
+
+{/each}