nebius/SWE-rebench-V2-PRs huggingface dataset:
Repository: sindresorhus/query-string
Pull request #287 (2020-10-15 19:29:21)

When only receiving values with encoded array value, decode values
Fixes https://github.com/sindresorhus/query-string/issues/242
Now all 99 tests pass (instead of one failing on purpose)
when pasting my url that used a custom array separator into slack, it was uri encoded, which broke things.
now in situations like that, the simple case will work, but allows more complicated cases to also still work.

mishugana: I changed over the code to use the includes method. All tests still pass. If you think this is an ok pull request, and you dont mind, would you be able to tag this pull request with hacktoberfest-accepted (if it does get accepted) since I am trying to get one of those free t-shirts. 

Patch:
diff --git a/index.js b/index.js
index 5b689ca..559ecd4 100644
--- a/index.js
+++ b/index.js
@@ -122,8 +122,10 @@ function parserForArrayFormat(options) {
 		case 'comma':
 		case 'separator':
 			return (key, value, accumulator) => {
-				const isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1;
-				const newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);
+				const isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);
+				const isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));
+				value = isEncodedArray ? decode(value, options) : value;
+				const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);
 				accumulator[key] = newValue;
 			};
 


Test patch:
diff --git a/test/parse.js b/test/parse.js
index c3135fd..365eb2f 100644
--- a/test/parse.js
+++ b/test/parse.js
@@ -323,7 +323,7 @@ test('value should not be decoded twice with `arrayFormat` option set as `separa
 });
 
 // See https://github.com/sindresorhus/query-string/issues/242
-test.failing('value separated by encoded comma will not be parsed as array with `arrayFormat` option set to `comma`', t => {
+test('value separated by encoded comma will not be parsed as array with `arrayFormat` option set to `comma`', t => {
 	t.deepEqual(queryString.parse('id=1%2C2%2C3', {arrayFormat: 'comma', parseNumbers: true}), {
 		id: [1, 2, 3]
 	});
Repository: sindresorhus/query-string
Pull request #306 (2021-02-03 16:00:39)

Ignore ending ampersand when parsing
Hi there!

Sometimes query string has an extra ampersand in the end. I think it shouldn't be in the result. What do you think about it?

**String to parse**
`foo=bar&`

**Actual result**
`{ '': null, foo: 'bar' }`

**Expected result**
`{ foo: 'bar' }`


Patch:
diff --git a/index.js b/index.js
index 559ecd4..39e86e3 100644
--- a/index.js
+++ b/index.js
@@ -244,6 +244,10 @@ function parse(query, options) {
 	}
 
 	for (const param of query.split('&')) {
+		if (param === '') {
+			continue;
+		}
+
 		let [key, value] = splitOnFirst(options.decode ? param.replace(/\+/g, ' ') : param, '=');
 
 		// Missing `=` should be `null`:


Test patch:
diff --git a/test/parse.js b/test/parse.js
index 365eb2f..9bfc034 100644
--- a/test/parse.js
+++ b/test/parse.js
@@ -13,6 +13,11 @@ test('query strings starting with a `&`', t => {
 	t.deepEqual(queryString.parse('&foo=bar&foo=baz'), {foo: ['bar', 'baz']});
 });
 
+test('query strings ending with a `&`', t => {
+	t.deepEqual(queryString.parse('foo=bar&'), {foo: 'bar'});
+	t.deepEqual(queryString.parse('foo=bar&&&'), {foo: 'bar'});
+});
+
 test('parse a query string', t => {
 	t.deepEqual(queryString.parse('foo=bar'), {foo: 'bar'});
 });
Repository: sindresorhus/query-string
Pull request #406 (2025-05-01 16:58:28)

FIX: types option - single array item parsing
Hey @sindresorhus , here's the fix https://github.com/sindresorhus/query-string/issues/404

I also realised this bug was affecting the `number[]` type as well, so have also fixed that too. 


Patch:
diff --git a/base.js b/base.js
index ad9e7b1..e67109d 100644
--- a/base.js
+++ b/base.js
@@ -309,14 +309,22 @@ function parseValue(value, options, type) {
 		return type(value);
 	}
 
-	if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
-		return value.toLowerCase() === 'true';
+	if (type === 'string[]' && options.arrayFormat !== 'none' && typeof value === 'string') {
+		return [value];
+	}
+
+	if (type === 'number[]' && options.arrayFormat !== 'none' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {
+		return [Number(value)];
 	}
 
 	if (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {
 		return Number(value);
 	}
 
+	if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
+		return value.toLowerCase() === 'true';
+	}
+
 	if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {
 		return Number(value);
 	}


Test patch:
diff --git a/test/parse.js b/test/parse.js
index 34929e5..d20f540 100644
--- a/test/parse.js
+++ b/test/parse.js
@@ -547,8 +547,7 @@ test('types option: all supported types work in conjunction with one another', t
 	});
 });
 
-// https://github.com/sindresorhus/query-string/issues/404
-test.failing('types option: single element with `{arrayFormat: "comma"}`', t => {
+test('types option: single element with `{arrayFormat: "comma"} and type: string[]`', t => {
 	t.deepEqual(queryString.parse('a=b', {
 		arrayFormat: 'comma',
 		types: {
@@ -558,3 +557,14 @@ test.failing('types option: single element with `{arrayFormat: "comma"}`', t =>
 		a: ['b'],
 	});
 });
+
+test('types option: single element with `{arrayFormat: "comma"}, and type: number[]`', t => {
+	t.deepEqual(queryString.parse('a=1', {
+		arrayFormat: 'comma',
+		types: {
+			a: 'number[]',
+		},
+	}), {
+		a: [1],
+	});
+});
Repository: sindresorhus/query-string
Pull request #410 (2025-07-02 16:48:07)

FEAT: boolean type accepts an empty string as true
Implemented the request for supporting null values as booleans from this comment https://github.com/sindresorhus/query-string/pull/407#issuecomment-2915480810



Patch:
diff --git a/base.d.ts b/base.d.ts
index a008640..77ec1a8 100644
--- a/base.d.ts
+++ b/base.d.ts
@@ -286,7 +286,8 @@ export type ParseOptions = {
 	});
 	//=> {isAdmin: 'true', flagged: true, isOkay: false}
 	```
-	Note: The `'boolean'` type will also convert `'0'` and `'1'` string values to booleans.
+
+	Note: The `'boolean'` type also converts `'0'` and `'1'` to booleans, and treats valueless keys (e.g. `?flag`) as `true`.
 	*/
 	readonly types?: Record<
 	string,
diff --git a/base.js b/base.js
index 07daf47..9b9ab4f 100644
--- a/base.js
+++ b/base.js
@@ -309,6 +309,10 @@ function parseValue(value, options, type) {
 		return type(value);
 	}
 
+	if (type === 'boolean' && value === null) {
+		return true;
+	}
+
 	if (type === 'boolean' && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
 		return value.toLowerCase() === 'true';
 	}
diff --git a/readme.md b/readme.md
index 1813507..a381843 100644
--- a/readme.md
+++ b/readme.md
@@ -217,7 +217,7 @@ queryString.parse('?isAdmin=true&flagged=true&isOkay=0', {
 //=> {isAdmin: 'true', flagged: true, isOkay: false}
 ```
 
-Note: The `'boolean'` type will also convert `'0'` and `'1'` string values to booleans.
+Note: The `'boolean'` type also converts `'0'` and `'1'` to booleans, and treats valueless keys (e.g. `?flag`) as `true`.
 
 - `'string'`: Parse `phoneNumber` as a string (overriding the `parseNumbers` option):
 


Test patch:
diff --git a/test/parse.js b/test/parse.js
index ad25dbe..0befd37 100644
--- a/test/parse.js
+++ b/test/parse.js
@@ -592,3 +592,19 @@ test('types option: boolean type accepts 1 and 0 as boolean values', t => {
 		b: false,
 	});
 });
+
+test('types option: boolean type accepts an empty string as true', t => {
+	t.deepEqual(
+		queryString.parse('a&b', {
+			parsebooleans: false,
+			types: {
+				a: 'boolean',
+				b: 'boolean',
+			},
+		}),
+		{
+			a: true,
+			b: true,
+		},
+	);
+});
Repository: sindresorhus/serialize-error
Pull request #101 (2025-01-03 17:36:04)

Tighten Error determination
- Part of #84 
- Blocked by #100 

This PR:
- stops treating `{message}` as a deserializable error _unless_ it's specifically:
	```ts
	{message: string}
	```
- stops treating `{name, message, stack}` as an error unless it's specifically
	```ts
	{
		name: string,
		message: string,
		stack: string,
	}
	```


Technically breaking changes, in practice they're just bug fixes.


Patch:
diff --git a/index.js b/index.js
index 376711a..d32d91a 100644
--- a/index.js
+++ b/index.js
@@ -196,15 +196,16 @@ export function deserializeError(value, options = {}) {
 export function isErrorLike(value) {
 	return Boolean(value)
 	&& typeof value === 'object'
-	&& 'name' in value
-	&& 'message' in value
-	&& 'stack' in value;
+	&& typeof value.name === 'string'
+	&& typeof value.message === 'string'
+	&& typeof value.stack === 'string';
 }
 
+// Used as a weak check for immediately-passed objects, whereas `isErrorLike` is used for nested values to avoid bad detection
 function isMinimumViableSerializedError(value) {
 	return Boolean(value)
 	&& typeof value === 'object'
-	&& 'message' in value
+	&& typeof value.message === 'string'
 	&& !Array.isArray(value);
 }
 


Test patch:
diff --git a/test.js b/test.js
index 2da916f..5f31174 100644
--- a/test.js
+++ b/test.js
@@ -2,7 +2,12 @@ import {Buffer} from 'node:buffer';
 import Stream from 'node:stream';
 import test from 'ava';
 import errorConstructors from './error-constructors.js';
-import {serializeError, deserializeError, isErrorLike} from './index.js';
+import {
+	serializeError,
+	deserializeError,
+	isErrorLike,
+	NonError,
+} from './index.js';
 
 function deserializeNonError(t, value) {
 	const deserialized = deserializeError(value);
@@ -351,6 +356,44 @@ test('should deserialize properties up to `Options.maxDepth` levels deep', t =>
 	t.deepEqual(levelThree, error);
 });
 
+test('should ignore invalid error-like objects', t => {
+	const errorLike = {
+		name: 'Error',
+		message: 'Some error message',
+	};
+
+	const nonErrorLike = {
+		name: 'Error',
+		message: (new class Message {}('Bottle')),
+	};
+
+	t.true(deserializeError(errorLike) instanceof Error);
+	t.true(deserializeError(nonErrorLike) instanceof NonError);
+});
+
+test('should ignore nested invalid error-like objects', t => {
+	const errorLike = {
+		message: 'Base',
+		nested: {
+			name: 'Error',
+			message: 'Some error message',
+			stack: 'at <anonymous>:1:13',
+		},
+	};
+
+	const nonErrorLike = {
+		message: 'Base',
+		nested: {
+			name: 'Error',
+			message: (new class Message {}('Bottle')),
+			stack: 'at <anonymous>:1:13',
+		},
+	};
+
+	t.true(deserializeError(errorLike).nested instanceof Error);
+	t.false(deserializeError(nonErrorLike).nested instanceof Error);
+});
+
 test('should serialize Date as ISO string', t => {
 	const date = {date: new Date(0)};
 	const serialized = serializeError(date);
Repository: sjbarag/brs
Pull request #568 (2020-10-27 16:27:25)

fix(stdlib): only append flag once to RoRegex
# Change summary

Previously, if you tried to call `RoRegex#matchAll` or `RoRegex:replaceAll` multiple times using the same `RoRegex` instance, a Javascript error would be thrown because the `g` flag appeared multiple times in the Javascript regex constructor. This PR fixes that.


Patch:
diff --git a/src/brsTypes/components/RoRegex.ts b/src/brsTypes/components/RoRegex.ts
index 9eb98ff..e5da42f 100644
--- a/src/brsTypes/components/RoRegex.ts
+++ b/src/brsTypes/components/RoRegex.ts
@@ -124,7 +124,10 @@ export class RoRegex extends BrsComponent implements BrsValue {
         },
         impl: (interpreter: Interpreter, str: BrsString, replacement: BrsString) => {
             const source = this.jsRegex.source;
-            const flags = this.jsRegex.flags + "g";
+            let flags = this.jsRegex.flags;
+            if (!flags.includes("g")) {
+                flags += "g";
+            }
             this.jsRegex = new RegExp(source, flags);
             const newStr = this.jsRegex[Symbol.replace](str.value, replacement.value);
 
@@ -153,7 +156,10 @@ export class RoRegex extends BrsComponent implements BrsValue {
         },
         impl: (interpreter: Interpreter, str: BrsString) => {
             const source = this.jsRegex.source;
-            const flags = this.jsRegex.flags + "g";
+            let flags = this.jsRegex.flags;
+            if (!flags.includes("g")) {
+                flags += "g";
+            }
             this.jsRegex = new RegExp(source, flags);
             let arr = [];
             let matches: string[] | null;


Test patch:
diff --git a/test/e2e/resources/components/roRegex.brs b/test/e2e/resources/components/roRegex.brs
index c7e9ab8..1f1e703 100644
--- a/test/e2e/resources/components/roRegex.brs
+++ b/test/e2e/resources/components/roRegex.brs
@@ -8,13 +8,15 @@ sub main()
 
     print "Replacing ',' in 2019,03,26 by '-' on first occurrence: " regex.replace("2019,03,26", "-")
     print "Replacing ',' in 2019,03,26 by '-' on all occurrences: " regex.replaceall("2019,03,26", "-")
+    ' make sure we can call replaceall multiple times without error
+    regex.replaceall("2019,03,26", "-")
     parts = regex.split("2019,03,26")
     print "Split by ',': [ " parts[0] " " parts[1] " " parts[2] " ]"
 
     regex = createObject("roRegex", "\d+", "i")
 
     matches = regex.match("123 456 789")
-    print "First match: [ " matches[0] " ]" 
+    print "First match: [ " matches[0] " ]"
 
     matches = regex.matchall("123 456 789")
     print "All matches: [ "
@@ -22,4 +24,7 @@ sub main()
     print "[ " matches[1][0] " ]"
     print "[ " matches[2][0] " ]"
     print " ]"
+
+    ' make sure we can call matchall multiple times without error.
+    regex.matchall("123 456 789")
 end sub
Repository: sjbarag/brs
Pull request #645 (2021-04-12 17:48:13)

fix(rsg): Reparent does not add child to new parent
Fixes https://github.com/sjbarag/brs/issues/644

Fixed by calling `appendChildToParent` instead of `setParent` from `reparent`'s implementation.


Patch:
diff --git a/src/brsTypes/components/RoSGNode.ts b/src/brsTypes/components/RoSGNode.ts
index 4f93405..cd096e6 100644
--- a/src/brsTypes/components/RoSGNode.ts
+++ b/src/brsTypes/components/RoSGNode.ts
@@ -1472,7 +1472,7 @@ export class RoSGNode extends BrsComponent implements BrsValue, BrsIterable {
                 if (this.parent instanceof RoSGNode) {
                     this.parent.removeChildByReference(this);
                 }
-                this.setParent(newParent);
+                newParent.appendChildToParent(this);
                 return BrsBoolean.True;
             }
             return BrsBoolean.False;


Test patch:
diff --git a/test/e2e/RoSGNode.test.js b/test/e2e/RoSGNode.test.js
index 6eb0882..4191b60 100644
--- a/test/e2e/RoSGNode.test.js
+++ b/test/e2e/RoSGNode.test.js
@@ -174,6 +174,8 @@ describe("components/roSGNode", () => {
             "4",
             "new parent id: ",
             "new node",
+            "new child count after reparent: ",
+            "1",
             //ifNodeDict tests
             "find node that does not exist: ",
             "invalid",
diff --git a/test/e2e/resources/components/roSGNode/roSGNode.brs b/test/e2e/resources/components/roSGNode/roSGNode.brs
index 7dd22c2..e7991a7 100644
--- a/test/e2e/resources/components/roSGNode/roSGNode.brs
+++ b/test/e2e/resources/components/roSGNode/roSGNode.brs
@@ -100,7 +100,7 @@ sub init()
     print "parent child count: " parentNode.getChildCount()         ' => 4
     childNode3.reparent(childNode4, false)
     print "new parent id: " childNode3.getParent().id         ' => new node
-
+    print "new child count after reparent: " childNode4.getChildCount()    ' => 1
     'ifNodeDict tests
     ' no node exists
     currentNode = createObject("roSGNode", "Node")
Repository: sjbarag/brs
Pull request #649 (2021-04-23 17:29:16)

fix(extensions): reset mocks between executions
# Change summary

This resets mocks between executions that share the same base scope, to prevent them from polluting/interfering with each other. Got the idea from the implementation in #646!

Related: https://github.com/hulu/roca/issues/89


Patch:
diff --git a/src/index.ts b/src/index.ts
index 5def870..e8d5389 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -234,7 +234,10 @@ export async function createExecuteWithScope(
     interpreter.errors = [];
 
     return (filenames: string[], args: BrsTypes.BrsType[]) => {
+        // Reset any mocks so that subsequent executions don't interfere with each other.
+        interpreter.environment.resetMocks();
         resetTestData();
+
         let ast = lexParseSync(filenames, interpreter.options);
         let execErrors: BrsError.BrsError[] = [];
         let returnValue = interpreter.inSubEnv((subInterpreter) => {


Test patch:
diff --git a/test/e2e/createExecuteWithScope.test.js b/test/e2e/createExecuteWithScope.test.js
index 28d4872..cf22fb7 100644
--- a/test/e2e/createExecuteWithScope.test.js
+++ b/test/e2e/createExecuteWithScope.test.js
@@ -73,4 +73,22 @@ describe("createExecuteWithScope", () => {
             "main:onlyInScopeForMain",
         ]);
     });
+
+    test("mocks defined in earlier execution calls do not exist in subsequent executions", async () => {
+        let execute = await createExecuteWithScope([resourceFile("in-scope.brs")], outputStreams);
+
+        // mock.brs mocks the function
+        execute([resourceFile("mock.brs")], []);
+
+        // main calls the function
+        execute([resourceFile("main.brs")], [new BrsString("argz4main")]);
+
+        // the output from both files should be there
+        expect(allArgs(outputStreams.stdout.write).filter((arg) => arg !== "\n")).toEqual([
+            "mock:mocked",
+            "main:arg:argz4main",
+            "main:commonUtil",
+            "main:onlyInScopeForMain",
+        ]);
+    });
 });
diff --git a/test/e2e/resources/execute-with-scope/mock.brs b/test/e2e/resources/execute-with-scope/mock.brs
new file mode 100644
index 0000000..073810b
--- /dev/null
+++ b/test/e2e/resources/execute-with-scope/mock.brs
@@ -0,0 +1,7 @@
+sub main()
+    _brs_.mockFunction("commonUtil", function()
+        return "mocked"
+    end function)
+
+    print "mock:" + commonUtil() ' => "mocked"
+end sub
Repository: sjbarag/brs
Pull request #659 (2021-06-09 00:08:07)

fix(interp): allow functions to be typed as objects
# Changes

This fixes a bug where if you tried to do:
```brs
sub foo(arg as object) : end sub
sub bar() : end sub

foo(bar) ' runtime error
```
`brs` would throw an ugly error. RBI allows this type-casting, so we should too!

This error was actually getting thrown a bunch in the sister project, https://github.com/hulu/roca, since `brs@0.44.0`, because all the `describe` and `it` functions use the `as object` type for functions.

sjbarag: This probably would have been caught if I released an RC last week instead of a full version. 🤔 perhaps we should make that part of the release flow?

Patch:
diff --git a/src/brsTypes/coercion.ts b/src/brsTypes/coercion.ts
index 324eedd..abadf8e 100644
--- a/src/brsTypes/coercion.ts
+++ b/src/brsTypes/coercion.ts
@@ -25,6 +25,9 @@ export function tryCoerce(value: BrsType, target: ValueKind): BrsType | undefine
         } else if (value instanceof BrsComponent) {
             // types that are always objects should be returned unmodified
             return value;
+        } else if (value.kind === ValueKind.Callable) {
+            // functions can be given the object type
+            return value;
         }
     }
 


Test patch:
diff --git a/test/brsTypes/coercion.test.js b/test/brsTypes/coercion.test.js
index c8e380c..c2853c0 100644
--- a/test/brsTypes/coercion.test.js
+++ b/test/brsTypes/coercion.test.js
@@ -1,4 +1,5 @@
 const { types } = require("../../lib");
+const { Callable } = require("../../lib/brsTypes/Callable");
 const {
     tryCoerce,
     ValueKind,
@@ -49,6 +50,7 @@ describe("type coercion", () => {
             ["string", new BrsString("lorem"), ValueKind.String],
             ["boolean", BrsBoolean.False, ValueKind.Boolean],
             ["invalid", BrsInvalid.Instance, ValueKind.Invalid],
+            ["function", new Callable("foo"), ValueKind.Object],
         ])("returns input for %s target when no coercion needed", (_type, input, target) => {
             expect(input).toBeDefined();
             expect(tryCoerce(input, target)).toBe(input);
Repository: single-spa/single-spa-layout
Pull request #67 (2020-09-16 20:54:26)

Automatically adding container around server rendered applications.
Doing this allows the browser to seamlessly pick up where the server left off.


Patch:
diff --git a/src/server/renderServerResponseBody.js b/src/server/renderServerResponseBody.js
index 489c63c..aae6438 100644
--- a/src/server/renderServerResponseBody.js
+++ b/src/server/renderServerResponseBody.js
@@ -163,7 +163,11 @@ function serializeApplication({
     appStream = stringStream(appStream);
   }
 
+  output.add(stringStream(`<div id="single-spa-application:${props.name}">`));
+
   output.add(appStream);
+
+  output.add(stringStream(`</div>`));
 }
 
 function isRouterContent(node) {


Test patch:
diff --git a/test/node-only/__snapshots__/renderServerResponseBody-node.test.js.snap b/test/node-only/__snapshots__/renderServerResponseBody-node.test.js.snap
index f4a4a35..3900446 100644
--- a/test/node-only/__snapshots__/renderServerResponseBody-node.test.js.snap
+++ b/test/node-only/__snapshots__/renderServerResponseBody-node.test.js.snap
@@ -14,12 +14,18 @@ exports[`renderServerResponseBody allows for strings to be returned from renderA
   </head>
   <body>
     <div id="single-spa-application:header">
+      <button>
+        App header
+      </button>
     </div>
     <div class="main-content">
       <button>
         Top level content
       </button>
       <div id="single-spa-application:app1">
+        <button>
+          App app1
+        </button>
       </div>
       Some raw text
     </div>
@@ -69,12 +75,18 @@ exports[`renderServerResponseBody dom-elements.html fixture renders the app1 rou
   </head>
   <body>
     <div id="single-spa-application:header">
+      <button>
+        App header
+      </button>
     </div>
     <div class="main-content">
       <button>
         Top level content
       </button>
       <div id="single-spa-application:app1">
+        <button>
+          App app1
+        </button>
       </div>
       Some raw text
     </div>
diff --git a/test/node-only/renderServerResponseBody-node.test.js b/test/node-only/renderServerResponseBody-node.test.js
index 40c30fb..79f0a0b 100644
--- a/test/node-only/renderServerResponseBody-node.test.js
+++ b/test/node-only/renderServerResponseBody-node.test.js
@@ -28,7 +28,7 @@ describe(`renderServerResponseBody`, () => {
           const { name } = props;
           const appStream = new stream.Readable({
             read() {
-              appStream.push(`<div id="single-spa-application:${name}"></div>`);
+              appStream.push(`<button>App ${name}</button>`);
               appStream.push(null);
             },
           });
@@ -414,7 +414,7 @@ describe(`renderServerResponseBody`, () => {
         urlPath: "/app1",
         renderApplication(props) {
           const { name } = props;
-          return `<div id="single-spa-application:${name}"></div>`;
+          return `<button>App ${name}</button>`;
         },
       }
     );