Merge remote-tracking branch 'upstream/main' into feature/js-api-supports-get-path-params-5235

This commit is contained in:
Sid
2026-01-21 18:18:13 +05:30
179 changed files with 7456 additions and 1406 deletions

View File

@@ -0,0 +1,9 @@
{
"version": "1",
"name": "is-safe-mode-test",
"type": "collection",
"ignore": [
"node_modules",
".git"
]
}

View File

@@ -0,0 +1,17 @@
meta {
name: test-safe-mode-false
type: http
seq: 2
}
get {
url: https://echo.usebruno.com
body: none
auth: none
}
tests {
test("bru.isSafeMode() returns false in developer mode", function() {
expect(bru.isSafeMode()).to.be.false;
});
}

View File

@@ -0,0 +1,17 @@
meta {
name: test-safe-mode-true
type: http
seq: 1
}
get {
url: https://echo.usebruno.com
body: none
auth: none
}
tests {
test("bru.isSafeMode() returns true in safe mode", function() {
expect(bru.isSafeMode()).to.be.true;
});
}

View File

@@ -0,0 +1,10 @@
{
"collections": [
{
"path": "{{projectRoot}}/tests/scripting/bru-api/isSafeMode/fixtures/collections/is-safe-mode-test",
"securityConfig": {
"jsSandboxMode": "developer"
}
}
]
}

View File

@@ -0,0 +1,6 @@
{
"maximized": false,
"lastOpenedCollections": [
"{{projectRoot}}/tests/scripting/bru-api/isSafeMode/fixtures/collections/is-safe-mode-test"
]
}

View File

@@ -0,0 +1,42 @@
import { test } from '../../../../playwright';
import { setSandboxMode, runCollection, validateRunnerResults } from '../../../utils/page';
test.describe.parallel('bru.isSafeMode() API', () => {
test('returns false when running in developer mode', async ({ pageWithUserData: page }) => {
// Set up developer mode
await setSandboxMode(page, 'is-safe-mode-test', 'developer');
// Run the collection
await runCollection(page, 'is-safe-mode-test');
// Validate test results
// In developer mode:
// - test-safe-mode-false should PASS (expects false, gets false)
// - test-safe-mode-true should FAIL (expects true, gets false)
await validateRunnerResults(page, {
totalRequests: 2,
passed: 1,
failed: 1,
skipped: 0
});
});
test('returns true when running in safe mode', async ({ pageWithUserData: page }) => {
// Set up safe mode
await setSandboxMode(page, 'is-safe-mode-test', 'safe');
// Run the collection
await runCollection(page, 'is-safe-mode-test');
// Validate test results
// In safe mode:
// - test-safe-mode-false should FAIL (expects false, gets true)
// - test-safe-mode-true should PASS (expects true, gets true)
await validateRunnerResults(page, {
totalRequests: 2,
passed: 1,
failed: 1,
skipped: 0
});
});
});

View File

@@ -5,10 +5,5 @@
"ignore": [
"node_modules",
".git"
],
"scripts": {
"filesystemAccess": {
"allow": true
}
}
]
}

View File

@@ -1,14 +0,0 @@
{
"version": "1",
"name": "should_disallow_fs",
"type": "collection",
"ignore": [
"node_modules",
".git"
],
"scripts": {
"filesystemAccess": {
"allow": false
}
}
}

View File

@@ -1,15 +0,0 @@
meta {
name: request
type: http
seq: 1
}
post {
url: https://echo.usebruno.com
body: none
auth: none
}
script:pre-request {
const fs = require('fs');
}

View File

@@ -2,79 +2,39 @@ import { test } from '../../../../playwright';
import { setSandboxMode, runCollection, validateRunnerResults } from '../../../utils/page';
test.describe.serial('`fs` library', () => {
test.describe('should allow `fs` library', () => {
test('developer mode', async ({ pageWithUserData: page }) => {
test.setTimeout(2 * 60 * 1000);
test('developer mode allows fs', async ({ pageWithUserData: page }) => {
test.setTimeout(2 * 60 * 1000);
// Set up developer mode
await setSandboxMode(page, 'should_allow_fs', 'developer');
// Set up developer mode
await setSandboxMode(page, 'should_allow_fs', 'developer');
// Run the collection
await runCollection(page, 'should_allow_fs');
// Run the collection
await runCollection(page, 'should_allow_fs');
// Validate test results
await validateRunnerResults(page, {
totalRequests: 1,
passed: 1,
failed: 0,
skipped: 0
});
});
test('safe mode', async ({ pageWithUserData: page }) => {
test.setTimeout(2 * 60 * 1000);
// Set up safe mode
await setSandboxMode(page, 'should_allow_fs', 'safe');
// Run the collection
await runCollection(page, 'should_allow_fs');
// Validate test results
await validateRunnerResults(page, {
totalRequests: 1,
passed: 0,
failed: 1,
skipped: 0
});
// Validate test results
await validateRunnerResults(page, {
totalRequests: 1,
passed: 1,
failed: 0,
skipped: 0
});
});
test.describe('should disallow `fs` library', () => {
test('developer mode', async ({ pageWithUserData: page }) => {
test.setTimeout(2 * 60 * 1000);
test('safe mode blocks fs', async ({ pageWithUserData: page }) => {
test.setTimeout(2 * 60 * 1000);
// Set up developer mode
await setSandboxMode(page, 'should_disallow_fs', 'developer');
// Set up safe mode
await setSandboxMode(page, 'should_allow_fs', 'safe');
// Run the collection
await runCollection(page, 'should_disallow_fs');
// Run the collection
await runCollection(page, 'should_allow_fs');
// Validate test results
await validateRunnerResults(page, {
totalRequests: 1,
passed: 0,
failed: 1,
skipped: 0
});
});
test('safe mode', async ({ pageWithUserData: page }) => {
test.setTimeout(2 * 60 * 1000);
// Set up safe mode
await setSandboxMode(page, 'should_disallow_fs', 'safe');
// Run the collection
await runCollection(page, 'should_disallow_fs');
// Validate test results
await validateRunnerResults(page, {
totalRequests: 1,
passed: 0,
failed: 1,
skipped: 0
});
// Validate test results
await validateRunnerResults(page, {
totalRequests: 1,
passed: 0,
failed: 1,
skipped: 0
});
});
});

View File

@@ -1,7 +1,6 @@
{
"maximized": false,
"lastOpenedCollections": [
"{{projectRoot}}/tests/scripting/inbuilt-libraries/fs/fixtures/collections/should_allow_fs",
"{{projectRoot}}/tests/scripting/inbuilt-libraries/fs/fixtures/collections/should_disallow_fs"
"{{projectRoot}}/tests/scripting/inbuilt-libraries/fs/fixtures/collections/should_allow_fs"
]
}