diff --git a/tests/qweb/__snapshots__/qweb_memory.test.ts.snap b/tests/qweb/__snapshots__/qweb_memory.test.ts.snap
new file mode 100644
index 00000000..a8881b07
--- /dev/null
+++ b/tests/qweb/__snapshots__/qweb_memory.test.ts.snap
@@ -0,0 +1,24 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`memory t-foreach does not leak stuff in global scope 1`] = `
+"function anonymous(bdom, helpers
+) {
+ let { text, createBlock, list, multi, html, toggler, component } = bdom;
+ let { withDefault, getTemplate, prepareList, withKey, zero, call, callSlot, capture, isBoundary, shallowEqual, setContextValue } = helpers;
+
+ let block1 = createBlock(\`
\`);
+
+ return function template(ctx, node, key = \\"\\") {
+ ctx = Object.create(ctx);
+ const [k_block2, v_block2, l_block2, c_block2] = prepareList([3,2,1]);
+ for (let i1 = 0; i1 < l_block2; i1++) {
+ ctx[\`item\`] = v_block2[i1];
+ ctx[\`item_index\`] = i1;
+ let key1 = ctx['item_index'];
+ c_block2[i1] = withKey(text(ctx['item']), key1);
+ }
+ let b2 = list(c_block2);
+ return block1([], [b2]);
+ }
+}"
+`;
diff --git a/tests/qweb/qweb_memory.test.ts b/tests/qweb/qweb_memory.test.ts
new file mode 100644
index 00000000..0dcbb178
--- /dev/null
+++ b/tests/qweb/qweb_memory.test.ts
@@ -0,0 +1,12 @@
+import { renderToString, snapshotEverything } from "../helpers";
+
+snapshotEverything();
+
+describe("memory", () => {
+ test("t-foreach does not leak stuff in global scope", () => {
+ const initialNumberOfGlobals = Object.keys(window).length;
+ const template = `
`;
+ expect(renderToString(template)).toBe("321
");
+ expect(Object.keys(window).length).toBe(initialNumberOfGlobals);
+ });
+});