From c459c19c1a011e66cb08a61fe84f885d98b0f939 Mon Sep 17 00:00:00 2001 From: Nahuel Alejandro Ramos Date: Thu, 17 Aug 2023 13:09:27 -0300 Subject: [PATCH] chore: add bad reference error [gh-800] --- .../common/__test-utils__/playwright/index.ts | 2 ++ .../e2e/browser/browser.spec.ts | 10 ++++++++++ .../e2e/checkly.config.ts | 18 ++++++++++++++++++ packages/cli/e2e/__tests__/test.spec.ts | 13 +++++++++++++ packages/cli/src/constructs/browser-check.ts | 6 +++++- 5 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/common/__test-utils__/playwright/index.ts create mode 100644 packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/e2e/browser/browser.spec.ts create mode 100644 packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/e2e/checkly.config.ts diff --git a/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/common/__test-utils__/playwright/index.ts b/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/common/__test-utils__/playwright/index.ts new file mode 100644 index 00000000..9192ca17 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/common/__test-utils__/playwright/index.ts @@ -0,0 +1,2 @@ +export const waitForNewTab = 1 +export const waitForPageNavigation = 2 diff --git a/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/e2e/browser/browser.spec.ts b/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/e2e/browser/browser.spec.ts new file mode 100644 index 00000000..f561b252 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/e2e/browser/browser.spec.ts @@ -0,0 +1,10 @@ +/* eslint-disable no-console */ +// Note: These must be relative imports above the checkly.config.ts location +import { waitForNewTab, waitForPageNavigation } from '../../common/__test-utils__/playwright' +import { test } from '@playwright/test' + +test('login and and navigate to the provider shopfront', ({ page }) => { + console.log('ok') + page.setDefaultTimeout(10000) + console.log(waitForNewTab, waitForPageNavigation) +}) diff --git a/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/e2e/checkly.config.ts b/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/e2e/checkly.config.ts new file mode 100644 index 00000000..bac8bfe4 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-bad-reference-project/e2e/checkly.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'checkly' + +const config = defineConfig({ + projectName: 'Test Project (bad reference project)', + logicalId: 'test-bad-reference-project', + repoUrl: 'https://github.com/checkly/checkly-cli', + checks: { + locations: ['us-east-1', 'eu-west-1'], + tags: ['mac'], + runtimeId: '2022.10', + checkMatch: '**/*.check.ts', + browserChecks: { + testMatch: '**/*.spec.ts', + }, + }, +}) + +export default config diff --git a/packages/cli/e2e/__tests__/test.spec.ts b/packages/cli/e2e/__tests__/test.spec.ts index c0ca63ef..652a3c40 100644 --- a/packages/cli/e2e/__tests__/test.spec.ts +++ b/packages/cli/e2e/__tests__/test.spec.ts @@ -53,6 +53,19 @@ describe('test', () => { expect(result.status).toBe(1) }) + it('Should fail with bad dependency reference', async () => { + const result = await runChecklyCli({ + args: ['test'], + apiKey: config.get('apiKey'), + accountId: config.get('accountId'), + directory: path.join(__dirname, 'fixtures', 'test-bad-reference-project', 'e2e'), + }) + expect(result.stderr).toContain('Error: You cannot reference a dependency file above the Checkly config') + expect(result.stderr).toContain('location folder. Please, modify') + expect(result.stderr).toContain('"../common/__test-utils__/playwright/index.ts" path.') + expect(result.status).toBe(1) + }) + it('Should terminate when no checks are found', async () => { const result = await runChecklyCli({ args: ['test', 'does-not-exist.js'], diff --git a/packages/cli/src/constructs/browser-check.ts b/packages/cli/src/constructs/browser-check.ts index 46871206..bc3ed773 100644 --- a/packages/cli/src/constructs/browser-check.ts +++ b/packages/cli/src/constructs/browser-check.ts @@ -111,8 +111,12 @@ export class BrowserCheck extends Check { const deps: CheckDependency[] = [] for (const { filePath, content } of parsed.dependencies) { + const relativePath = pathToPosix(path.relative(Session.basePath!, filePath)) + if (relativePath.startsWith('..')) { + throw new Error(`You cannot reference a dependency file above the Checkly config location folder. Please, modify "${relativePath}" path.`) + } deps.push({ - path: pathToPosix(path.relative(Session.basePath!, filePath)), + path: relativePath, content, }) }