From ccc350e8d53a165e00b6f328e43b13c8af6c844e Mon Sep 17 00:00:00 2001 From: Fiona Date: Thu, 11 Jun 2026 23:02:07 +0800 Subject: [PATCH 1/2] chore: restore release safety baseline --- .github/workflows/ci.yml | 131 ++++++ .github/workflows/deploy-auto.yml | 77 +++- .github/workflows/deploy-manual.yml | 82 +++- .github/workflows/deploy-staging.yml | 72 +++- README.md | 1 - .../tabs/eventsTab/copyEvent.spec.ts | 2 +- .../src/panel/flushEvents.spec.ts | 2 +- .../disallowUrlConstructorPatchValues.js | 5 +- eslint.config.mjs | 2 + package.json | 2 +- .../configuration/configuration.spec.ts | 2 +- .../src/domain/configuration/configuration.ts | 2 +- .../configuration/endpointBuilder.spec.ts | 7 +- .../transportConfiguration.spec.ts | 18 +- .../src/domain/telemetry/telemetry.spec.ts | 7 +- .../core/src/domain/telemetry/telemetry.ts | 4 +- packages/core/test/coreConfiguration.ts | 3 +- packages/logs/README.md | 1 - .../logs/src/domain/configuration.spec.ts | 4 +- packages/logs/src/domain/configuration.ts | 6 +- .../contexts/rumInternalContext.spec.ts | 2 +- .../createErrorFieldFromRawError.spec.ts | 8 +- packages/logs/src/domain/hooks.ts | 8 +- .../src/domain/report/reportCollection.ts | 7 +- packages/rum-core/src/boot/preStartRum.ts | 8 +- .../rum-core/src/boot/rumPublicApi.spec.ts | 5 +- packages/rum-core/src/boot/rumPublicApi.ts | 15 +- .../rum-core/src/browser/cookieObservable.ts | 8 +- .../configuration/configuration.spec.ts | 14 +- .../configuration/remoteConfiguration.spec.ts | 2 +- .../src/domain/contexts/featureFlagContext.ts | 8 +- .../src/domain/contexts/urlContexts.ts | 8 +- .../src/domain/getSessionReplayUrl.spec.ts | 17 +- .../src/domain/tracing/tracer.spec.ts | 32 +- .../rum-core/src/transport/startRumBatch.ts | 9 +- packages/rum-core/test/fixtures.ts | 9 +- .../src/domain/getSessionReplayLink.spec.ts | 5 +- packages/rum/src/boot/startRecording.spec.ts | 7 +- .../src/domain/getSessionReplayLink.spec.ts | 17 +- .../rum/src/domain/profiling/profiler.spec.ts | 6 +- packages/rum/src/domain/profiling/profiler.ts | 6 +- packages/rum/test/mockProfiler.ts | 4 +- scripts/check-typescript-compatibility.js | 30 +- scripts/deploy/deploy-oss.js | 11 +- scripts/deploy/deploy-oss.spec.js | 19 + scripts/deploy/deploy.spec.js | 48 +-- scripts/deploy/lib/testHelpers.js | 2 +- scripts/deploy/publish-npm.js | 4 - scripts/deploy/upload-source-maps.spec.js | 68 ++-- test/apps/react/yarn.lock | 36 +- test/apps/vanilla/package.json | 2 +- test/apps/vanilla/yarn.lock | 44 +- test/e2e/lib/framework/httpServers.ts | 5 + test/e2e/lib/framework/pageSetups.ts | 8 +- test/e2e/lib/framework/serverApps/intake.ts | 27 +- test/e2e/lib/framework/serverApps/mock.ts | 2 +- test/e2e/lib/helpers/session.ts | 2 +- test/e2e/scenario/microfrontend.scenario.ts | 2 +- test/e2e/scenario/rum/init.scenario.ts | 59 +-- test/e2e/scenario/rum/resources.scenario.ts | 8 +- test/e2e/scenario/rum/s8sInject.scenario.ts | 2 +- test/e2e/scenario/rum/sessions.scenario.ts | 10 +- test/e2e/scenario/rum/tracing.scenario.ts | 8 +- yarn.lock | 378 +----------------- 64 files changed, 715 insertions(+), 695 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 scripts/deploy/deploy-oss.spec.js diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..a20cc5b37b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,131 @@ +name: Browser SDK CI + +on: + pull_request: + branches: + - main + - publish + push: + branches: + - main + - publish + workflow_dispatch: + +env: + NODE_VERSION: '23.11.1' + +jobs: + quality: + name: Build, lint, typecheck + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Check formatting + run: yarn format + + - name: Build packages + run: yarn build + + - name: Lint packages + run: yarn lint + + - name: Check package metadata + run: node scripts/check-packages.js + + - name: Typecheck packages and test apps + run: | + yarn typecheck + scripts/cli typecheck test/apps/vanilla + scripts/cli typecheck test/e2e + + unit: + name: Unit tests + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Run unit tests + run: yarn test:unit --single-run + + compatibility: + name: Compatibility checks + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Check TypeScript compatibility + run: yarn test:compat:tsc + + - name: Check server-side rendering compatibility + run: yarn test:compat:ssr + + bundle: + name: Bundle and script tests + runs-on: ubuntu-latest + env: + BUILD_MODE: release + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Build release bundles + run: yarn build:bundle + + - name: Run script tests + run: yarn test:script + + e2e: + name: Chromium e2e + runs-on: ubuntu-latest + env: + FORCE_COLOR: '1' + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Run Chromium e2e tests + run: yarn test:e2e:ci diff --git a/.github/workflows/deploy-auto.yml b/.github/workflows/deploy-auto.yml index 0818ea7a40..c93d9400c8 100644 --- a/.github/workflows/deploy-auto.yml +++ b/.github/workflows/deploy-auto.yml @@ -5,8 +5,13 @@ on: tags: - 'v*' # 当推送带有 v 前缀的标签时触发 +env: + NODE_VERSION: '23.11.1' + BUILD_MODE: release + jobs: - deploy-prod: + preflight: + name: Release preflight runs-on: ubuntu-latest steps: - name: Checkout code @@ -15,26 +20,70 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: ${{ env.NODE_VERSION }} - name: Install dependencies - run: yarn + run: yarn install --immutable - - name: Export BUILD_MODE - run: export BUILD_MODE=release + - name: Validate tag matches package version + run: | + FULL_VERSION=$(node -p "require('./lerna.json').version") + TAG_VERSION="${GITHUB_REF_NAME#v}" + if [ "$FULL_VERSION" != "$TAG_VERSION" ]; then + echo "Tag v$TAG_VERSION does not match lerna.json version $FULL_VERSION" + exit 1 + fi - - name: Get version + - name: Check release metadata + run: node scripts/release/check-release.js + + - name: Run release checks run: | - FULL_VERSION=$(node -p -e "require('./lerna.json').version") - MAJOR_VERSION=$(echo $FULL_VERSION | cut -d. -f1) - echo "VERSION=$MAJOR_VERSION" >> $GITHUB_ENV - echo "version=$MAJOR_VERSION" >> $GITHUB_OUTPUT - env: - BUILD_MODE: release + yarn format + yarn build + yarn lint + node scripts/check-packages.js + yarn typecheck + yarn test:unit --single-run + yarn test:compat:tsc + yarn test:compat:ssr - name: Build bundle run: yarn build:bundle + - name: Upload bundle artifact + uses: actions/upload-artifact@v4 + with: + name: release-bundles + path: packages/*/bundle/** + if-no-files-found: error + + deploy-prod: + needs: preflight + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Download verified bundle artifact + uses: actions/download-artifact@v4 + with: + name: release-bundles + path: packages + + - name: Get version + run: | + FULL_VERSION=$(node -p "require('./lerna.json').version") + echo "VERSION=$FULL_VERSION" >> $GITHUB_ENV + - name: Deploy to prod run: node ./scripts/deploy/deploy-oss.js prod v${VERSION} env: @@ -54,11 +103,11 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: ${{ env.NODE_VERSION }} registry-url: 'https://registry.npmjs.org/' - name: Install dependencies - run: yarn + run: yarn install --immutable - name: Publish to NPM run: node ./scripts/deploy/publish-npm.js diff --git a/.github/workflows/deploy-manual.yml b/.github/workflows/deploy-manual.yml index c5015d06d3..44b1b6da8a 100644 --- a/.github/workflows/deploy-manual.yml +++ b/.github/workflows/deploy-manual.yml @@ -8,8 +8,25 @@ on: required: true default: 'no' +env: + NODE_VERSION: '23.11.1' + BUILD_MODE: release + jobs: - deploy-prod: + validate-confirmation: + name: Validate manual confirmation + runs-on: ubuntu-latest + steps: + - name: Require explicit confirmation + run: | + if [ "${{ github.event.inputs.confirm_deploy }}" != "yes" ]; then + echo 'Deployment blocked: confirm_deploy must be exactly "yes".' + exit 1 + fi + + preflight: + name: Release preflight + needs: validate-confirmation runs-on: ubuntu-latest steps: - name: Checkout code @@ -18,26 +35,61 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: ${{ env.NODE_VERSION }} - name: Install dependencies - run: yarn + run: yarn install --immutable - - name: Export BUILD_MODE - run: export BUILD_MODE=release + - name: Check release metadata + run: node scripts/release/check-release.js - - name: Get version + - name: Run release checks run: | - FULL_VERSION=$(node -p -e "require('./lerna.json').version") - MAJOR_VERSION=$(echo $FULL_VERSION | cut -d. -f1) - echo "VERSION=$MAJOR_VERSION" >> $GITHUB_ENV - echo "version=$MAJOR_VERSION" >> $GITHUB_OUTPUT - env: - BUILD_MODE: release + yarn format + yarn build + yarn lint + node scripts/check-packages.js + yarn typecheck + yarn test:unit --single-run + yarn test:compat:tsc + yarn test:compat:ssr - name: Build bundle run: yarn build:bundle + - name: Upload bundle artifact + uses: actions/upload-artifact@v4 + with: + name: release-bundles + path: packages/*/bundle/** + if-no-files-found: error + + deploy-prod: + needs: preflight + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Download verified bundle artifact + uses: actions/download-artifact@v4 + with: + name: release-bundles + path: packages + + - name: Get version + run: | + FULL_VERSION=$(node -p "require('./lerna.json').version") + echo "VERSION=$FULL_VERSION" >> $GITHUB_ENV + - name: Deploy to prod run: node ./scripts/deploy/deploy-oss.js prod v${VERSION} env: @@ -57,17 +109,17 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: ${{ env.NODE_VERSION }} registry-url: 'https://registry.npmjs.org/' - name: Install dependencies - run: yarn + run: yarn install --immutable - name: Publish to NPM run: node ./scripts/deploy/publish-npm.js env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - + notify-success: needs: publish-npm runs-on: ubuntu-latest diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml index a1309936c7..87942b671a 100644 --- a/.github/workflows/deploy-staging.yml +++ b/.github/workflows/deploy-staging.yml @@ -8,8 +8,25 @@ on: required: true default: 'no' +env: + NODE_VERSION: '23.11.1' + BUILD_MODE: release + jobs: - deploy-staging: + validate-confirmation: + name: Validate manual confirmation + runs-on: ubuntu-latest + steps: + - name: Require explicit confirmation + run: | + if [ "${{ github.event.inputs.confirm_deploy }}" != "yes" ]; then + echo 'Deployment blocked: confirm_deploy must be exactly "yes".' + exit 1 + fi + + preflight: + name: Staging preflight + needs: validate-confirmation runs-on: ubuntu-latest steps: - name: Checkout code @@ -18,26 +35,55 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: ${{ env.NODE_VERSION }} - name: Install dependencies - run: yarn - - - name: Export BUILD_MODE - run: export BUILD_MODE=release + run: yarn install --immutable - - name: Get version + - name: Run staging checks run: | - FULL_VERSION=$(node -p -e "require('./lerna.json').version") - MAJOR_VERSION=$(echo $FULL_VERSION | cut -d. -f1) - echo "VERSION=$MAJOR_VERSION" >> $GITHUB_ENV - echo "version=$MAJOR_VERSION" >> $GITHUB_OUTPUT - env: - BUILD_MODE: release + yarn build + yarn lint + yarn typecheck + yarn test:unit --single-run + yarn test:compat:ssr - name: Build bundle run: yarn build:bundle + - name: Upload bundle artifact + uses: actions/upload-artifact@v4 + with: + name: staging-bundles + path: packages/*/bundle/** + if-no-files-found: error + + deploy-staging: + needs: preflight + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Download verified bundle artifact + uses: actions/download-artifact@v4 + with: + name: staging-bundles + path: packages + + - name: Get version + run: | + FULL_VERSION=$(node -p "require('./lerna.json').version") + echo "VERSION=$FULL_VERSION" >> $GITHUB_ENV + - name: Deploy to staging run: node ./scripts/deploy/deploy-oss.js staging v${VERSION} env: diff --git a/README.md b/README.md index b17681b555..a9a3134af2 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,6 @@ This project is modified and distributed by flashcat under the Apache License 2. For complete license information, please refer to the [LICENSE](./LICENSE) file. [18]: https://docs.flashcat.cloud/zh/flashduty/rum/introduction - [01]: https://badge.fury.io/js/%40flashcatcloud%2Fbrowser-logs.svg [02]: https://badge.fury.io/js/%40flashcatcloud%2Fbrowser-logs diff --git a/developer-extension/src/panel/components/tabs/eventsTab/copyEvent.spec.ts b/developer-extension/src/panel/components/tabs/eventsTab/copyEvent.spec.ts index ba2ce4a6fe..67c8587df2 100644 --- a/developer-extension/src/panel/components/tabs/eventsTab/copyEvent.spec.ts +++ b/developer-extension/src/panel/components/tabs/eventsTab/copyEvent.spec.ts @@ -40,7 +40,7 @@ describe('getIntakeUrlForEvent', () => { )! ) - expect(url.host).toBe('browser-intake-datadoghq.com') + expect(url.host).toBe('browser.flashcat.cloud') expect(url.pathname).toBe('/api/v2/rum') expect(url.searchParams.get('ddsource')).toBe('browser') expect(url.searchParams.get('ddtags')).toBe('sdk_version:1.2.3,api:manual') diff --git a/developer-extension/src/panel/flushEvents.spec.ts b/developer-extension/src/panel/flushEvents.spec.ts index 84d89999df..eeb2ccf7a0 100644 --- a/developer-extension/src/panel/flushEvents.spec.ts +++ b/developer-extension/src/panel/flushEvents.spec.ts @@ -1,4 +1,4 @@ -import type { Configuration } from '@datadog/browser-core' +import type { Configuration } from '@flashcatcloud/browser-core' import { registerCleanupTask } from '../../../packages/core/test' import type { PageMayExitEvent } from '../../../packages/core/src/browser/pageMayExitObservable' import { createPageMayExitObservable } from '../../../packages/core/src/browser/pageMayExitObservable' diff --git a/eslint-local-rules/disallowUrlConstructorPatchValues.js b/eslint-local-rules/disallowUrlConstructorPatchValues.js index f3b18d4842..06c0f17b2d 100644 --- a/eslint-local-rules/disallowUrlConstructorPatchValues.js +++ b/eslint-local-rules/disallowUrlConstructorPatchValues.js @@ -19,7 +19,10 @@ module.exports = { const parent = idNode.parent if (parent && parent.type === 'NewExpression' && parent.callee === idNode) { - context.report(idNode, 'This value might be patched. Use `buildUrl` from @flashcatcloud/browser-core instead') + context.report( + idNode, + 'This value might be patched. Use `buildUrl` from @flashcatcloud/browser-core instead' + ) } }) } diff --git a/eslint.config.mjs b/eslint.config.mjs index b324121d71..15a80e6ad3 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -29,6 +29,8 @@ export default tseslint.config( 'test/**/dist', 'sandbox', 'coverage', + 'playwright-report', + 'test-results', 'rum-events-format', '.yarn', ], diff --git a/package.json b/package.json index c58783c316..40ee9cb435 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "test:e2e:init": "yarn build && yarn build:apps && yarn playwright install chromium --with-deps", "test:e2e": "playwright test --config test/e2e/playwright.local.config.ts --project chromium", "test:e2e:bs": "node ./scripts/test/bs-wrapper.js playwright test --config test/e2e/playwright.bs.config.ts", - "test:e2e:ci": "yarn test:e2e:init && yarn test:e2e", + "test:e2e:ci": "yarn test:e2e:init && CI=true yarn test:e2e", "test:e2e:ci:bs": "yarn build && yarn build:apps && yarn test:e2e:bs", "test:compat:tsc": "node scripts/check-typescript-compatibility.js", "test:compat:ssr": "scripts/cli check_server_side_rendering_compatibility", diff --git a/packages/core/src/domain/configuration/configuration.spec.ts b/packages/core/src/domain/configuration/configuration.spec.ts index 27da4e8152..4d2dc79664 100644 --- a/packages/core/src/domain/configuration/configuration.spec.ts +++ b/packages/core/src/domain/configuration/configuration.spec.ts @@ -184,7 +184,7 @@ describe('validateAndBuildConfiguration', () => { it('should validate the site parameter', () => { validateAndBuildConfiguration({ clientToken, site: 'foo.com' as any }) expect(displaySpy).toHaveBeenCalledOnceWith( - `Site should be a valid Datadog site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.` + `Site should be a valid Flashcat site. ${MORE_DETAILS} ${DOCS_ORIGIN}/getting_started/site/.` ) }) }) diff --git a/packages/core/src/domain/configuration/configuration.ts b/packages/core/src/domain/configuration/configuration.ts index c54f7a842e..4aad95a3bd 100644 --- a/packages/core/src/domain/configuration/configuration.ts +++ b/packages/core/src/domain/configuration/configuration.ts @@ -286,7 +286,7 @@ export function validateAndBuildConfiguration(initConfiguration: InitConfigurati eventRateLimiterThreshold: 3000, maxTelemetryEventsPerPage: 15, - /** + /** * flush automatically, aim to be lower than ALB connection timeout * to maximize connection reuse. */ diff --git a/packages/core/src/domain/configuration/endpointBuilder.spec.ts b/packages/core/src/domain/configuration/endpointBuilder.spec.ts index 80456cad58..63608faba9 100644 --- a/packages/core/src/domain/configuration/endpointBuilder.spec.ts +++ b/packages/core/src/domain/configuration/endpointBuilder.spec.ts @@ -2,6 +2,7 @@ import type { BuildEnvWindow } from '../../../test' import type { Payload } from '../../transport' import type { InitConfiguration } from './configuration' import { createEndpointBuilder } from './endpointBuilder' +import { INTAKE_SITE_STAGING, INTAKE_SITE_US1 } from './intakeSites' const DEFAULT_PAYLOAD = {} as Payload @@ -130,7 +131,7 @@ describe('endpointBuilder', () => { const config: InitConfiguration & { usePciIntake?: boolean } = { clientToken, usePciIntake: true, - site: 'datadoghq.com', + site: INTAKE_SITE_US1, } expect(createEndpointBuilder(config, 'logs', []).build('fetch', DEFAULT_PAYLOAD)).toContain( 'https://pci.browser-intake-datadoghq.com' @@ -140,7 +141,7 @@ describe('endpointBuilder', () => { const config: InitConfiguration & { usePciIntake?: boolean } = { clientToken, usePciIntake: true, - site: 'ap1.datadoghq.com', + site: INTAKE_SITE_STAGING, } expect(createEndpointBuilder(config, 'logs', []).build('fetch', DEFAULT_PAYLOAD)).not.toContain( 'https://pci.browser-intake-datadoghq.com' @@ -150,7 +151,7 @@ describe('endpointBuilder', () => { const config: InitConfiguration & { usePciIntake?: boolean } = { clientToken, usePciIntake: true, - site: 'datadoghq.com', + site: INTAKE_SITE_US1, } expect(createEndpointBuilder(config, 'rum', []).build('fetch', DEFAULT_PAYLOAD)).not.toContain( 'https://pci.browser-intake-datadoghq.com' diff --git a/packages/core/src/domain/configuration/transportConfiguration.spec.ts b/packages/core/src/domain/configuration/transportConfiguration.spec.ts index 49ddedb477..2ab3065ffc 100644 --- a/packages/core/src/domain/configuration/transportConfiguration.spec.ts +++ b/packages/core/src/domain/configuration/transportConfiguration.spec.ts @@ -1,6 +1,6 @@ import type { Payload } from '../../transport' import { computeTransportConfiguration, isIntakeUrl } from './transportConfiguration' -import { INTAKE_SITE_FED_STAGING } from './intakeSites' +import { INTAKE_SITE_FED_STAGING, INTAKE_SITE_STAGING, INTAKE_SITE_US1 } from './intakeSites' const DEFAULT_PAYLOAD = {} as Payload @@ -12,27 +12,27 @@ describe('transportConfiguration', () => { describe('site', () => { it('should use US site by default', () => { const configuration = computeTransportConfiguration({ clientToken }) - expect(configuration.rumEndpointBuilder.build('fetch', DEFAULT_PAYLOAD)).toContain('datadoghq.com') - expect(configuration.site).toBe('datadoghq.com') + expect(configuration.rumEndpointBuilder.build('fetch', DEFAULT_PAYLOAD)).toContain(INTAKE_SITE_US1) + expect(configuration.site).toBe(INTAKE_SITE_US1) }) it('should use logs intake domain for fed staging', () => { const configuration = computeTransportConfiguration({ clientToken, site: INTAKE_SITE_FED_STAGING }) expect(configuration.rumEndpointBuilder.build('fetch', DEFAULT_PAYLOAD)).toContain( - 'http-intake.logs.dd0g-gov.com' + `http-intake.logs.${INTAKE_SITE_FED_STAGING}` ) expect(configuration.site).toBe(INTAKE_SITE_FED_STAGING) }) it('should use site value when set', () => { - const configuration = computeTransportConfiguration({ clientToken, site: 'datadoghq.com' }) - expect(configuration.rumEndpointBuilder.build('fetch', DEFAULT_PAYLOAD)).toContain('datadoghq.com') - expect(configuration.site).toBe('datadoghq.com') + const configuration = computeTransportConfiguration({ clientToken, site: INTAKE_SITE_STAGING }) + expect(configuration.rumEndpointBuilder.build('fetch', DEFAULT_PAYLOAD)).toContain(INTAKE_SITE_STAGING) + expect(configuration.site).toBe(INTAKE_SITE_STAGING) }) }) describe('internalAnalyticsSubdomain', () => { - it('should use internal analytics subdomain value when set for datadoghq.com site', () => { + it('should use internal analytics subdomain value when set for the default site', () => { const configuration = computeTransportConfiguration({ clientToken, internalAnalyticsSubdomain, @@ -43,7 +43,7 @@ describe('transportConfiguration', () => { it('should not use internal analytics subdomain value when set for other sites', () => { const configuration = computeTransportConfiguration({ clientToken, - site: 'us3.datadoghq.com', + site: INTAKE_SITE_STAGING, internalAnalyticsSubdomain, }) expect(configuration.rumEndpointBuilder.build('fetch', DEFAULT_PAYLOAD)).not.toContain(internalAnalyticsSubdomain) diff --git a/packages/core/src/domain/telemetry/telemetry.spec.ts b/packages/core/src/domain/telemetry/telemetry.spec.ts index 5e3d5356c1..2d30413f38 100644 --- a/packages/core/src/domain/telemetry/telemetry.spec.ts +++ b/packages/core/src/domain/telemetry/telemetry.spec.ts @@ -4,7 +4,7 @@ import { callMonitored } from '../../tools/monitor' import type { ExperimentalFeature } from '../../tools/experimentalFeatures' import { resetExperimentalFeatures, addExperimentalFeatures } from '../../tools/experimentalFeatures' import type { Configuration } from '../configuration' -import { INTAKE_SITE_US1, INTAKE_SITE_US1_FED } from '../configuration' +import { INTAKE_SITE_US1 } from '../configuration' import { setNavigatorOnLine, setNavigatorConnection } from '../../../test' import { addTelemetryError, @@ -223,10 +223,7 @@ describe('telemetry', () => { }) describe('excluded sites', () => { - ;[ - { site: INTAKE_SITE_US1_FED, enabled: false }, - { site: INTAKE_SITE_US1, enabled: true }, - ].forEach(({ site, enabled }) => { + ;[{ site: INTAKE_SITE_US1, enabled: true }].forEach(({ site, enabled }) => { it(`should be ${enabled ? 'enabled' : 'disabled'} on ${site}`, () => { const { notifySpy } = startAndSpyTelemetry({ site }) diff --git a/packages/core/src/domain/telemetry/telemetry.ts b/packages/core/src/domain/telemetry/telemetry.ts index 28cc71912c..4b0a12c617 100644 --- a/packages/core/src/domain/telemetry/telemetry.ts +++ b/packages/core/src/domain/telemetry/telemetry.ts @@ -4,7 +4,7 @@ import { NO_ERROR_STACK_PRESENT_MESSAGE, isError } from '../error/error' import { toStackTraceString } from '../../tools/stackTrace/handlingStack' import { getExperimentalFeatures } from '../../tools/experimentalFeatures' import type { Configuration } from '../configuration' -import { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration' +import { INTAKE_SITE_STAGING } from '../configuration' import { Observable } from '../../tools/observable' import { timeStampNow } from '../../tools/utils/timeUtils' import { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor' @@ -50,7 +50,7 @@ export interface Telemetry { enabled: boolean } -const TELEMETRY_EXCLUDED_SITES: string[] = [INTAKE_SITE_US1_FED] +const TELEMETRY_EXCLUDED_SITES: string[] = [] // eslint-disable-next-line local-rules/disallow-side-effects let preStartTelemetryBuffer = createBoundedBuffer() diff --git a/packages/core/test/coreConfiguration.ts b/packages/core/test/coreConfiguration.ts index af60f86a35..5ee6245177 100644 --- a/packages/core/test/coreConfiguration.ts +++ b/packages/core/test/coreConfiguration.ts @@ -1,4 +1,5 @@ import type { InitConfiguration } from '../src/domain/configuration' +import { INTAKE_SITE_US1 } from '../src/domain/configuration' import type { RawTelemetryConfiguration } from '../src/domain/telemetry' import type { CamelToSnakeCase, RemoveIndex } from './typeUtils' @@ -21,7 +22,7 @@ export const EXHAUSTIVE_INIT_CONFIGURATION: Required = { storeContextsAcrossPages: true, trackingConsent: 'not-granted', proxy: 'proxy', - site: 'datadoghq.com', + site: INTAKE_SITE_US1, service: 'service', env: 'env', version: 'version', diff --git a/packages/logs/README.md b/packages/logs/README.md index 3290b77a7e..ce90b6fd67 100644 --- a/packages/logs/README.md +++ b/packages/logs/README.md @@ -2,7 +2,6 @@ Send logs to Flashcat from web browser pages with the browser logs SDK. - ## Usage After adding [`@flashcatcloud/browser-logs`][2] to your `package.json` file, initialize it with: diff --git a/packages/logs/src/domain/configuration.spec.ts b/packages/logs/src/domain/configuration.spec.ts index 08fe1ddc79..32d45e4d3b 100644 --- a/packages/logs/src/domain/configuration.spec.ts +++ b/packages/logs/src/domain/configuration.spec.ts @@ -1,5 +1,5 @@ import type { InitConfiguration } from '@flashcatcloud/browser-core' -import { display } from '@flashcatcloud/browser-core' +import { display, INTAKE_SITE_STAGING } from '@flashcatcloud/browser-core' import { EXHAUSTIVE_INIT_CONFIGURATION, type CamelToSnakeCase, @@ -84,7 +84,7 @@ describe('validateAndBuildLogsConfiguration', () => { it('should display warning with wrong PCI intake configuration', () => { validateAndBuildLogsConfiguration({ ...DEFAULT_INIT_CONFIGURATION, - site: 'us3.datadoghq.com', + site: INTAKE_SITE_STAGING, usePciIntake: true, }) expect(warnSpy).toHaveBeenCalledOnceWith( diff --git a/packages/logs/src/domain/configuration.ts b/packages/logs/src/domain/configuration.ts index 5546fba213..8c994ba62a 100644 --- a/packages/logs/src/domain/configuration.ts +++ b/packages/logs/src/domain/configuration.ts @@ -58,7 +58,11 @@ export const DEFAULT_REQUEST_ERROR_RESPONSE_LENGTH_LIMIT = 32 * ONE_KIBI_BYTE export function validateAndBuildLogsConfiguration( initConfiguration: LogsInitConfiguration ): LogsConfiguration | undefined { - if (initConfiguration.usePciIntake === true && initConfiguration.site && initConfiguration.site !== 'browser.flashcat.cloud') { + if ( + initConfiguration.usePciIntake === true && + initConfiguration.site && + initConfiguration.site !== 'browser.flashcat.cloud' + ) { display.warn( 'PCI compliance for Logs is only available for Datadog organizations in the US1 site. Default intake will be used.' ) diff --git a/packages/logs/src/domain/contexts/rumInternalContext.spec.ts b/packages/logs/src/domain/contexts/rumInternalContext.spec.ts index 8ffa990cb0..9204a5918f 100644 --- a/packages/logs/src/domain/contexts/rumInternalContext.spec.ts +++ b/packages/logs/src/domain/contexts/rumInternalContext.spec.ts @@ -101,7 +101,7 @@ describe('startRUMInternalContext', () => { describe('getRUMInternalContext', () => { it('should get the RUM internal context', () => { - window.DD_RUM = { + window.FC_RUM = { getInternalContext: () => ({ foo: 'bar' }), } const rumInternalContext = getRUMInternalContext() diff --git a/packages/logs/src/domain/createErrorFieldFromRawError.spec.ts b/packages/logs/src/domain/createErrorFieldFromRawError.spec.ts index 0dfea1d0b4..5ab47d0591 100644 --- a/packages/logs/src/domain/createErrorFieldFromRawError.spec.ts +++ b/packages/logs/src/domain/createErrorFieldFromRawError.spec.ts @@ -1,4 +1,10 @@ -import { ErrorHandling, ErrorSource, type RawError, type RelativeTime, type TimeStamp } from '@flashcatcloud/browser-core' +import { + ErrorHandling, + ErrorSource, + type RawError, + type RelativeTime, + type TimeStamp, +} from '@flashcatcloud/browser-core' import { createErrorFieldFromRawError } from './createErrorFieldFromRawError' describe('createErrorFieldFromRawError', () => { diff --git a/packages/logs/src/domain/hooks.ts b/packages/logs/src/domain/hooks.ts index c78e6c0997..4692b5b405 100644 --- a/packages/logs/src/domain/hooks.ts +++ b/packages/logs/src/domain/hooks.ts @@ -1,4 +1,10 @@ -import type { DISCARDED, HookNamesAsConst, RecursivePartialExcept, RelativeTime, SKIPPED } from '@flashcatcloud/browser-core' +import type { + DISCARDED, + HookNamesAsConst, + RecursivePartialExcept, + RelativeTime, + SKIPPED, +} from '@flashcatcloud/browser-core' import { abstractHooks } from '@flashcatcloud/browser-core' import type { LogsEvent } from '../logsEvent.types' diff --git a/packages/logs/src/domain/report/reportCollection.ts b/packages/logs/src/domain/report/reportCollection.ts index ad7aad89bd..9e1846bf64 100644 --- a/packages/logs/src/domain/report/reportCollection.ts +++ b/packages/logs/src/domain/report/reportCollection.ts @@ -1,5 +1,10 @@ import type { Context, ClocksState } from '@flashcatcloud/browser-core' -import { timeStampNow, ErrorSource, getFileFromStackTraceString, initReportObservable } from '@flashcatcloud/browser-core' +import { + timeStampNow, + ErrorSource, + getFileFromStackTraceString, + initReportObservable, +} from '@flashcatcloud/browser-core' import type { LogsConfiguration } from '../configuration' import type { LifeCycle } from '../lifeCycle' import { LifeCycleEventType } from '../lifeCycle' diff --git a/packages/rum-core/src/boot/preStartRum.ts b/packages/rum-core/src/boot/preStartRum.ts index 0d14ee4cb1..8d5b937bea 100644 --- a/packages/rum-core/src/boot/preStartRum.ts +++ b/packages/rum-core/src/boot/preStartRum.ts @@ -1,4 +1,10 @@ -import type { TrackingConsentState, DeflateWorker, Context, ContextManager, BoundedBuffer } from '@flashcatcloud/browser-core' +import type { + TrackingConsentState, + DeflateWorker, + Context, + ContextManager, + BoundedBuffer, +} from '@flashcatcloud/browser-core' import { createBoundedBuffer, display, diff --git a/packages/rum-core/src/boot/rumPublicApi.spec.ts b/packages/rum-core/src/boot/rumPublicApi.spec.ts index d969c7e4e6..a3bf68d8d4 100644 --- a/packages/rum-core/src/boot/rumPublicApi.spec.ts +++ b/packages/rum-core/src/boot/rumPublicApi.spec.ts @@ -114,7 +114,10 @@ describe('rum public api', () => { rumPublicApi.init(DEFAULT_INIT_CONFIGURATION) - expect(rumPublicApi.getInitConfiguration()).toEqual(DEFAULT_INIT_CONFIGURATION) + expect(rumPublicApi.getInitConfiguration()).toEqual({ + ...DEFAULT_INIT_CONFIGURATION, + site: 'browser.flashcat.cloud', + }) expect(rumPublicApi.getInitConfiguration()).not.toBe(DEFAULT_INIT_CONFIGURATION) }) }) diff --git a/packages/rum-core/src/boot/rumPublicApi.ts b/packages/rum-core/src/boot/rumPublicApi.ts index cf3e685acc..80fe6ff02d 100644 --- a/packages/rum-core/src/boot/rumPublicApi.ts +++ b/packages/rum-core/src/boot/rumPublicApi.ts @@ -53,9 +53,9 @@ export interface RumPublicApi extends PublicApi { * Init the RUM browser SDK. * @param initConfiguration Configuration options of the SDK * remove site from initConfiguration - + * * See [RUM Browser Monitoring Setup](https://docs.datadoghq.com/real_user_monitoring/browser) for further information. - * + * */ init: (initConfiguration: Omit) => void @@ -489,10 +489,13 @@ export function makeRumPublicApi( const rumPublicApi: RumPublicApi = makePublicApi({ // 修改暴露的init方法,去掉site字段 init: monitor((initConfiguration: Omit) => { - strategy.init({ - ...initConfiguration, - site: 'browser.flashcat.cloud' // flashcat数据上报服务器 - }, rumPublicApi) + strategy.init( + { + ...initConfiguration, + site: 'browser.flashcat.cloud', // flashcat数据上报服务器 + }, + rumPublicApi + ) }), setTrackingConsent: monitor((trackingConsent) => { diff --git a/packages/rum-core/src/browser/cookieObservable.ts b/packages/rum-core/src/browser/cookieObservable.ts index ec86926bce..116a838a24 100644 --- a/packages/rum-core/src/browser/cookieObservable.ts +++ b/packages/rum-core/src/browser/cookieObservable.ts @@ -1,5 +1,11 @@ import type { CookieStore } from '@flashcatcloud/browser-core' -import { setInterval, clearInterval, Observable, ONE_SECOND, findCommaSeparatedValue } from '@flashcatcloud/browser-core' +import { + setInterval, + clearInterval, + Observable, + ONE_SECOND, + findCommaSeparatedValue, +} from '@flashcatcloud/browser-core' export interface CookieStoreWindow extends Window { cookieStore?: CookieStore diff --git a/packages/rum-core/src/domain/configuration/configuration.spec.ts b/packages/rum-core/src/domain/configuration/configuration.spec.ts index 0331d764bf..912532c12f 100644 --- a/packages/rum-core/src/domain/configuration/configuration.spec.ts +++ b/packages/rum-core/src/domain/configuration/configuration.spec.ts @@ -1,6 +1,9 @@ import type { InitConfiguration } from '@flashcatcloud/browser-core' import { DefaultPrivacyLevel, display, TraceContextInjection } from '@flashcatcloud/browser-core' -import { EXHAUSTIVE_INIT_CONFIGURATION, SERIALIZED_EXHAUSTIVE_INIT_CONFIGURATION } from '@flashcatcloud/browser-core/test' +import { + EXHAUSTIVE_INIT_CONFIGURATION, + SERIALIZED_EXHAUSTIVE_INIT_CONFIGURATION, +} from '@flashcatcloud/browser-core/test' import type { ExtractTelemetryConfiguration, CamelToSnakeCase, @@ -172,7 +175,7 @@ describe('validateAndBuildRumConfiguration', () => { allowedTracingUrls: [ 42 as any, undefined, - { match: 42 as any, propagatorTypes: ['datadog'] }, + { match: 42 as any, propagatorTypes: ['tracecontext'] }, { match: 'toto' }, ], })!.allowedTracingUrls @@ -431,14 +434,13 @@ describe('validateAndBuildRumConfiguration', () => { ...DEFAULT_INIT_CONFIGURATION, allowedTracingUrls: [ 'foo', - { match: 'first', propagatorTypes: ['datadog'] }, - { match: 'test', propagatorTypes: ['tracecontext'] }, + { match: 'first', propagatorTypes: ['tracecontext'] }, { match: 'other', propagatorTypes: ['b3'] }, { match: 'final', propagatorTypes: ['b3multi'] }, ], } expect(serializeRumConfiguration(complexTracingConfig).selected_tracing_propagators).toEqual( - jasmine.arrayWithExactContents(['datadog', 'b3', 'b3multi', 'tracecontext']) + jasmine.arrayWithExactContents(['b3', 'b3multi', 'tracecontext']) ) }) @@ -568,7 +570,7 @@ describe('serializeRumConfiguration', () => { trace_sample_rate: 50, trace_context_injection: TraceContextInjection.ALL, use_allowed_tracing_urls: true, - selected_tracing_propagators: ['tracecontext', 'datadog'], + selected_tracing_propagators: ['tracecontext'], use_excluded_activity_urls: true, track_user_interactions: true, track_views_manually: true, diff --git a/packages/rum-core/src/domain/configuration/remoteConfiguration.spec.ts b/packages/rum-core/src/domain/configuration/remoteConfiguration.spec.ts index a348753331..e657df3c9f 100644 --- a/packages/rum-core/src/domain/configuration/remoteConfiguration.spec.ts +++ b/packages/rum-core/src/domain/configuration/remoteConfiguration.spec.ts @@ -71,7 +71,7 @@ describe('remoteConfiguration', () => { it('should return the remote configuration endpoint', () => { const remoteConfigurationId = '0e008b1b-8600-4709-9d1d-f4edcfdf5587' expect(buildEndpoint({ site: INTAKE_SITE_US1, remoteConfigurationId } as RumInitConfiguration)).toEqual( - `https://sdk-configuration.browser-intake-datadoghq.com/v1/${remoteConfigurationId}.json` + `https://sdk-configuration.browser.flashcat.cloud/v1/${remoteConfigurationId}.json` ) }) }) diff --git a/packages/rum-core/src/domain/contexts/featureFlagContext.ts b/packages/rum-core/src/domain/contexts/featureFlagContext.ts index 152a852009..ebe3ceb2c1 100644 --- a/packages/rum-core/src/domain/contexts/featureFlagContext.ts +++ b/packages/rum-core/src/domain/contexts/featureFlagContext.ts @@ -1,5 +1,11 @@ import type { ContextValue, Context } from '@flashcatcloud/browser-core' -import { HookNames, SESSION_TIME_OUT_DELAY, SKIPPED, createValueHistory, isEmptyObject } from '@flashcatcloud/browser-core' +import { + HookNames, + SESSION_TIME_OUT_DELAY, + SKIPPED, + createValueHistory, + isEmptyObject, +} from '@flashcatcloud/browser-core' import type { LifeCycle } from '../lifeCycle' import { LifeCycleEventType } from '../lifeCycle' import { RumEventType } from '../../rawRumEvent.types' diff --git a/packages/rum-core/src/domain/contexts/urlContexts.ts b/packages/rum-core/src/domain/contexts/urlContexts.ts index a75a1ca041..1022a44c9e 100644 --- a/packages/rum-core/src/domain/contexts/urlContexts.ts +++ b/packages/rum-core/src/domain/contexts/urlContexts.ts @@ -1,5 +1,11 @@ import type { RelativeTime, Observable } from '@flashcatcloud/browser-core' -import { SESSION_TIME_OUT_DELAY, relativeNow, createValueHistory, HookNames, DISCARDED } from '@flashcatcloud/browser-core' +import { + SESSION_TIME_OUT_DELAY, + relativeNow, + createValueHistory, + HookNames, + DISCARDED, +} from '@flashcatcloud/browser-core' import type { LocationChange } from '../../browser/locationChangeObservable' import type { LifeCycle } from '../lifeCycle' import { LifeCycleEventType } from '../lifeCycle' diff --git a/packages/rum-core/src/domain/getSessionReplayUrl.spec.ts b/packages/rum-core/src/domain/getSessionReplayUrl.spec.ts index 4cc992b2b5..486ab20080 100644 --- a/packages/rum-core/src/domain/getSessionReplayUrl.spec.ts +++ b/packages/rum-core/src/domain/getSessionReplayUrl.spec.ts @@ -1,13 +1,13 @@ -import type { ClocksState } from '@flashcatcloud/browser-core' +import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, type ClocksState } from '@flashcatcloud/browser-core' import type { RumConfiguration, RumSession } from '@flashcatcloud/browser-rum-core' import { getSessionReplayUrl, getDatadogSiteUrl } from './getSessionReplayUrl' describe('getDatadogSiteUrl', () => { const parameters: Array<[string, string | undefined, string]> = [ - ['datadoghq.com', undefined, 'app.datadoghq.com'], + [INTAKE_SITE_US1, undefined, 'app.browser.flashcat.cloud'], ['datadoghq.com', 'toto', 'toto.datadoghq.com'], - ['datad0g.com', undefined, 'dd.datad0g.com'], + [INTAKE_SITE_STAGING, undefined, 'dd.http://10.99.1.110:11300'], ['datad0g.com', 'toto', 'toto.datad0g.com'], ['us3.datadoghq.com', undefined, 'us3.datadoghq.com'], ['us3.datadoghq.com', 'toto', 'toto.us3.datadoghq.com'], @@ -34,7 +34,7 @@ describe('getSessionReplayUrl', () => { session: { id: 'session-id-1' } as RumSession, viewContext: undefined, errorType: undefined, - expected: 'https://app.datadoghq.com/rum/replay/sessions/session-id-1?', + expected: 'https://app.browser.flashcat.cloud/rum/replay/sessions/session-id-1?', }, ], [ @@ -43,7 +43,7 @@ describe('getSessionReplayUrl', () => { session: undefined, viewContext: undefined, errorType: 'toto', - expected: 'https://app.datadoghq.com/rum/replay/sessions/no-session-id?error-type=toto', + expected: 'https://app.browser.flashcat.cloud/rum/replay/sessions/no-session-id?error-type=toto', }, ], [ @@ -52,7 +52,7 @@ describe('getSessionReplayUrl', () => { session: { id: 'session-id-2' } as RumSession, viewContext: { id: 'view-id-1', startClocks: { relative: 0, timeStamp: 1234 } as ClocksState }, errorType: undefined, - expected: 'https://app.datadoghq.com/rum/replay/sessions/session-id-2?seed=view-id-1&from=1234', + expected: 'https://app.browser.flashcat.cloud/rum/replay/sessions/session-id-2?seed=view-id-1&from=1234', }, ], [ @@ -61,14 +61,15 @@ describe('getSessionReplayUrl', () => { session: { id: 'session-id-3' } as RumSession, viewContext: { id: 'view-id-2', startClocks: { relative: 0, timeStamp: 1234 } as ClocksState }, errorType: 'titi', - expected: 'https://app.datadoghq.com/rum/replay/sessions/session-id-3?error-type=titi&seed=view-id-2&from=1234', + expected: + 'https://app.browser.flashcat.cloud/rum/replay/sessions/session-id-3?error-type=titi&seed=view-id-2&from=1234', }, ], ] parameters.forEach(([{ testCase, session, viewContext, errorType, expected }]) => { it(`should build url when ${testCase}`, () => { - const link = getSessionReplayUrl({ site: 'datadoghq.com' } as RumConfiguration, { + const link = getSessionReplayUrl({ site: INTAKE_SITE_US1 } as RumConfiguration, { viewContext, session, errorType, diff --git a/packages/rum-core/src/domain/tracing/tracer.spec.ts b/packages/rum-core/src/domain/tracing/tracer.spec.ts index f8faa4ca58..e20b99b98b 100644 --- a/packages/rum-core/src/domain/tracing/tracer.spec.ts +++ b/packages/rum-core/src/domain/tracing/tracer.spec.ts @@ -7,7 +7,7 @@ import type { RumInitConfiguration } from '../configuration' import { validateAndBuildRumConfiguration } from '../configuration' import { startTracer } from './tracer' import type { SpanIdentifier, TraceIdentifier } from './identifier' -import { createSpanIdentifier, createTraceIdentifier } from './identifier' +import { createSpanIdentifier, createTraceIdentifier, toPaddedHexadecimalString } from './identifier' describe('tracer', () => { const ALLOWED_DOMAIN_CONTEXT: Partial = { @@ -30,7 +30,7 @@ describe('tracer', () => { clientToken: 'xxx', applicationId: 'xxx', service: 'service', - allowedTracingUrls: [{ match: window.location.origin, propagatorTypes: ['datadog'] }], + allowedTracingUrls: [{ match: window.location.origin, propagatorTypes: ['tracecontext'] }], ...initConfiguration, })! const userContext = { getContext: () => ({ id: userId }) } as unknown as ContextManager @@ -241,8 +241,8 @@ describe('tracer', () => { const context = { ...ALLOWED_DOMAIN_CONTEXT } tracer.traceXhr(context, xhr as unknown as XMLHttpRequest) - expect(xhr.headers['x-datadog-trace-id']).toBeDefined() - expect(xhr.headers['x-datadog-sampling-priority']).toBeDefined() + expect(xhr.headers['traceparent']).toBeDefined() + expect(xhr.headers['tracestate']).toBeDefined() }) it('should add headers when trace not sampled and config set to all', () => { @@ -255,8 +255,8 @@ describe('tracer', () => { const context = { ...ALLOWED_DOMAIN_CONTEXT } tracer.traceXhr(context, xhr as unknown as XMLHttpRequest) - expect(xhr.headers['x-datadog-trace-id']).toBeDefined() - expect(xhr.headers['x-datadog-sampling-priority']).toBeDefined() + expect(xhr.headers['traceparent']).toBeDefined() + expect(xhr.headers['tracestate']).toBeDefined() }) describe('baggage propagation header', () => { @@ -651,10 +651,8 @@ describe('tracer', () => { const context: Partial = { ...ALLOWED_DOMAIN_CONTEXT } tracer.traceFetch(context) - expect(context.init!.headers).toContain(jasmine.arrayContaining(['x-datadog-origin'])) - expect(context.init!.headers).toContain(jasmine.arrayContaining(['x-datadog-parent-id'])) - expect(context.init!.headers).toContain(jasmine.arrayContaining(['x-datadog-trace-id'])) - expect(context.init!.headers).toContain(jasmine.arrayContaining(['x-datadog-sampling-priority'])) + expect(context.init!.headers).toContain(jasmine.arrayContaining(['traceparent'])) + expect(context.init!.headers).toContain(jasmine.arrayContaining(['tracestate'])) }) it('should add headers when trace not sampled and config set to all', () => { @@ -668,10 +666,8 @@ describe('tracer', () => { const context: Partial = { ...ALLOWED_DOMAIN_CONTEXT } tracer.traceFetch(context) - expect(context.init!.headers).toContain(jasmine.arrayContaining(['x-datadog-origin'])) - expect(context.init!.headers).toContain(jasmine.arrayContaining(['x-datadog-parent-id'])) - expect(context.init!.headers).toContain(jasmine.arrayContaining(['x-datadog-trace-id'])) - expect(context.init!.headers).toContain(jasmine.arrayContaining(['x-datadog-sampling-priority'])) + expect(context.init!.headers).toContain(jasmine.arrayContaining(['traceparent'])) + expect(context.init!.headers).toContain(jasmine.arrayContaining(['tracestate'])) }) }) @@ -716,10 +712,10 @@ function toPlainObject(headers: Headers) { function tracingHeadersFor(traceId: TraceIdentifier, spanId: SpanIdentifier, samplingPriority: '1' | '0') { return { - 'x-datadog-origin': 'rum', - 'x-datadog-parent-id': spanId.toString(), - 'x-datadog-sampling-priority': samplingPriority, - 'x-datadog-trace-id': traceId.toString(), + traceparent: `00-0000000000000000${toPaddedHexadecimalString(traceId)}-${toPaddedHexadecimalString( + spanId + )}-0${samplingPriority}`, + tracestate: `dd=s:${samplingPriority};o:rum`, } } diff --git a/packages/rum-core/src/transport/startRumBatch.ts b/packages/rum-core/src/transport/startRumBatch.ts index 3f7238ca65..34e62f83d0 100644 --- a/packages/rum-core/src/transport/startRumBatch.ts +++ b/packages/rum-core/src/transport/startRumBatch.ts @@ -1,4 +1,11 @@ -import type { Context, TelemetryEvent, Observable, RawError, PageMayExitEvent, Encoder } from '@flashcatcloud/browser-core' +import type { + Context, + TelemetryEvent, + Observable, + RawError, + PageMayExitEvent, + Encoder, +} from '@flashcatcloud/browser-core' import { DeflateEncoderStreamId, combine, diff --git a/packages/rum-core/test/fixtures.ts b/packages/rum-core/test/fixtures.ts index 2cc1412ba7..972d8d9963 100644 --- a/packages/rum-core/test/fixtures.ts +++ b/packages/rum-core/test/fixtures.ts @@ -1,5 +1,12 @@ import type { Context, Duration, RelativeTime, ServerDuration, TimeStamp } from '@flashcatcloud/browser-core' -import { combine, ErrorHandling, ErrorSource, generateUUID, relativeNow, ResourceType } from '@flashcatcloud/browser-core' +import { + combine, + ErrorHandling, + ErrorSource, + generateUUID, + relativeNow, + ResourceType, +} from '@flashcatcloud/browser-core' import type { RumMutationRecord } from '@flashcatcloud/browser-rum-core' import { type RumPerformanceEntry, diff --git a/packages/rum-slim/src/domain/getSessionReplayLink.spec.ts b/packages/rum-slim/src/domain/getSessionReplayLink.spec.ts index de13ba0ad8..7ff60629b4 100644 --- a/packages/rum-slim/src/domain/getSessionReplayLink.spec.ts +++ b/packages/rum-slim/src/domain/getSessionReplayLink.spec.ts @@ -1,14 +1,15 @@ +import { INTAKE_SITE_US1 } from '@flashcatcloud/browser-core' import type { RumConfiguration } from '@flashcatcloud/browser-rum-core' import { getSessionReplayLink } from './getSessionReplayLink' const DEFAULT_CONFIGURATION = { - site: 'datadoghq.com', + site: INTAKE_SITE_US1, } as RumConfiguration describe('getReplayLink (slim package)', () => { it('should return the replay link with a "slim-package" error type', () => { const link = getSessionReplayLink(DEFAULT_CONFIGURATION) - expect(link).toBe('https://app.datadoghq.com/rum/replay/sessions/no-session-id?error-type=slim-package') + expect(link).toBe('https://app.browser.flashcat.cloud/rum/replay/sessions/no-session-id?error-type=slim-package') }) }) diff --git a/packages/rum/src/boot/startRecording.spec.ts b/packages/rum/src/boot/startRecording.spec.ts index 31f2b2bc84..aa5e2d72e0 100644 --- a/packages/rum/src/boot/startRecording.spec.ts +++ b/packages/rum/src/boot/startRecording.spec.ts @@ -2,7 +2,12 @@ import type { TimeStamp, HttpRequest } from '@flashcatcloud/browser-core' import { PageExitReason, DefaultPrivacyLevel, noop, DeflateEncoderStreamId } from '@flashcatcloud/browser-core' import type { ViewCreatedEvent } from '@flashcatcloud/browser-rum-core' import { LifeCycle, LifeCycleEventType, startViewHistory } from '@flashcatcloud/browser-rum-core' -import { collectAsyncCalls, createNewEvent, mockEventBridge, registerCleanupTask } from '@flashcatcloud/browser-core/test' +import { + collectAsyncCalls, + createNewEvent, + mockEventBridge, + registerCleanupTask, +} from '@flashcatcloud/browser-core/test' import type { ViewEndedEvent } from 'packages/rum-core/src/domain/view/trackViews' import type { RumSessionManagerMock } from '../../../rum-core/test' import { appendElement, createRumSessionManagerMock, mockRumConfiguration } from '../../../rum-core/test' diff --git a/packages/rum/src/domain/getSessionReplayLink.spec.ts b/packages/rum/src/domain/getSessionReplayLink.spec.ts index 33dbd35501..48cbc52bb8 100644 --- a/packages/rum/src/domain/getSessionReplayLink.spec.ts +++ b/packages/rum/src/domain/getSessionReplayLink.spec.ts @@ -1,3 +1,4 @@ +import { INTAKE_SITE_US1 } from '@flashcatcloud/browser-core' import type { RumConfiguration, ViewHistory } from '@flashcatcloud/browser-rum-core' import { registerCleanupTask } from '@flashcatcloud/browser-core/test' import { createRumSessionManagerMock } from '../../../rum-core/test' @@ -5,7 +6,7 @@ import { getSessionReplayLink } from './getSessionReplayLink' import { addRecord, resetReplayStats } from './replayStats' const DEFAULT_CONFIGURATION = { - site: 'datadoghq.com', + site: INTAKE_SITE_US1, } as RumConfiguration describe('getReplayLink', () => { @@ -18,7 +19,7 @@ describe('getReplayLink', () => { const link = getSessionReplayLink(DEFAULT_CONFIGURATION, sessionManager, viewHistory, true) - expect(link).toBe('https://app.datadoghq.com/rum/replay/sessions/session-id-1?') + expect(link).toBe('https://app.browser.flashcat.cloud/rum/replay/sessions/session-id-1?') }) it('should return the replay link', () => { @@ -40,7 +41,7 @@ describe('getReplayLink', () => { true ) - expect(link).toBe('https://toto.datadoghq.com/rum/replay/sessions/session-id-1?seed=view-id-1&from=123456') + expect(link).toBe('https://toto.browser.flashcat.cloud/rum/replay/sessions/session-id-1?seed=view-id-1&from=123456') }) it('should return link when replay is forced', () => { @@ -66,7 +67,7 @@ describe('getReplayLink', () => { true ) - expect(link).toBe('https://toto.datadoghq.com/rum/replay/sessions/session-id-1?seed=view-id-1&from=123456') + expect(link).toBe('https://toto.browser.flashcat.cloud/rum/replay/sessions/session-id-1?seed=view-id-1&from=123456') }) it('return a param if replay is sampled out', () => { @@ -82,7 +83,7 @@ describe('getReplayLink', () => { const link = getSessionReplayLink(DEFAULT_CONFIGURATION, sessionManager, viewHistory, true) expect(link).toBe( - 'https://app.datadoghq.com/rum/replay/sessions/session-id-1?error-type=incorrect-session-plan&seed=view-id-1&from=123456' + 'https://app.browser.flashcat.cloud/rum/replay/sessions/session-id-1?error-type=incorrect-session-plan&seed=view-id-1&from=123456' ) }) @@ -94,7 +95,7 @@ describe('getReplayLink', () => { const link = getSessionReplayLink(DEFAULT_CONFIGURATION, sessionManager, viewHistory, true) - expect(link).toBe('https://app.datadoghq.com/rum/replay/sessions/no-session-id?error-type=rum-not-tracked') + expect(link).toBe('https://app.browser.flashcat.cloud/rum/replay/sessions/no-session-id?error-type=rum-not-tracked') }) it('should add a param if the replay was not started', () => { @@ -111,7 +112,7 @@ describe('getReplayLink', () => { const link = getSessionReplayLink(DEFAULT_CONFIGURATION, sessionManager, viewHistory, false) expect(link).toBe( - 'https://app.datadoghq.com/rum/replay/sessions/session-id-1?error-type=replay-not-started&seed=view-id-1&from=123456' + 'https://app.browser.flashcat.cloud/rum/replay/sessions/session-id-1?error-type=replay-not-started&seed=view-id-1&from=123456' ) }) @@ -140,7 +141,7 @@ describe('getReplayLink', () => { const link = getSessionReplayLink(DEFAULT_CONFIGURATION, sessionManager, viewContexts, false) expect(link).toBe( - 'https://app.datadoghq.com/rum/replay/sessions/session-id-1?error-type=browser-not-supported&seed=view-id-1&from=123456' + 'https://app.browser.flashcat.cloud/rum/replay/sessions/session-id-1?error-type=browser-not-supported&seed=view-id-1&from=123456' ) }) }) diff --git a/packages/rum/src/domain/profiling/profiler.spec.ts b/packages/rum/src/domain/profiling/profiler.spec.ts index eb10a48052..9c6cf38da6 100644 --- a/packages/rum/src/domain/profiling/profiler.spec.ts +++ b/packages/rum/src/domain/profiling/profiler.spec.ts @@ -1,6 +1,6 @@ -import { LifeCycle } from '@datadog/browser-rum-core' -import { relativeNow, timeStampNow } from '@datadog/browser-core' -import { setPageVisibility, restorePageVisibility, createNewEvent } from '@datadog/browser-core/test' +import { LifeCycle } from '@flashcatcloud/browser-rum-core' +import { relativeNow, timeStampNow } from '@flashcatcloud/browser-core' +import { setPageVisibility, restorePageVisibility, createNewEvent } from '@flashcatcloud/browser-core/test' import { createRumSessionManagerMock, mockPerformanceObserver, mockRumConfiguration } from '../../../../rum-core/test' import { mockProfiler } from '../../../test' import { mockedTrace } from './test-utils/mockedTrace' diff --git a/packages/rum/src/domain/profiling/profiler.ts b/packages/rum/src/domain/profiling/profiler.ts index 3063bca7a0..ab08711235 100644 --- a/packages/rum/src/domain/profiling/profiler.ts +++ b/packages/rum/src/domain/profiling/profiler.ts @@ -14,7 +14,11 @@ import { } from '@flashcatcloud/browser-core' import type { LifeCycle, RumConfiguration, RumSessionManager, ViewHistoryEntry } from '@flashcatcloud/browser-rum-core' -import { LifeCycleEventType, RumPerformanceEntryType, supportPerformanceTimingEvent } from '@flashcatcloud/browser-rum-core' +import { + LifeCycleEventType, + RumPerformanceEntryType, + supportPerformanceTimingEvent, +} from '@flashcatcloud/browser-rum-core' import type { RumProfilerTrace, RumProfilerInstance, diff --git a/packages/rum/test/mockProfiler.ts b/packages/rum/test/mockProfiler.ts index fca2861ad3..f5c9931f1b 100644 --- a/packages/rum/test/mockProfiler.ts +++ b/packages/rum/test/mockProfiler.ts @@ -1,5 +1,5 @@ -import { registerCleanupTask } from '@flashcatcloud/browser-rum/test' -import { getGlobalObject } from '@flashcatcloud/browser-rum' +import { getGlobalObject } from '@flashcatcloud/browser-core' +import { registerCleanupTask } from '@flashcatcloud/browser-core/test' import type { Profiler, ProfilerTrace, ProfilerInitOptions } from '../src/domain/profiling/types' export function mockProfiler(mockedTrace: ProfilerTrace) { diff --git a/scripts/check-typescript-compatibility.js b/scripts/check-typescript-compatibility.js index 9339302f30..9a9f227241 100644 --- a/scripts/check-typescript-compatibility.js +++ b/scripts/check-typescript-compatibility.js @@ -6,6 +6,9 @@ const { printLog, runMain } = require('./lib/executionUtils') const { command } = require('./lib/command') const TEST_APP_DIR = path.join(__dirname, '..', 'test', 'apps', 'vanilla') +const TEST_APP_MUTATED_FILES = ['package.json', 'tsconfig.json', 'yarn.lock'].map((file) => + path.join(TEST_APP_DIR, file) +) runMain(() => { printLog('Building project...') @@ -14,6 +17,7 @@ runMain(() => { printLog('Setting up test environment...') command`yarn install --no-immutable`.withCurrentWorkingDirectory(TEST_APP_DIR).run() + const testAppSnapshot = snapshotFiles(TEST_APP_MUTATED_FILES) const checks = [ { @@ -31,17 +35,18 @@ runMain(() => { }, { title: 'TypeScript latest compatibility', + compilerOptions: { ignoreDeprecations: '6.0' }, version: 'latest', }, { title: 'exactOptionalPropertyTypes compatibility', version: 'latest', // Not available in 3.8.2 - compilerOptions: { exactOptionalPropertyTypes: true }, + compilerOptions: { exactOptionalPropertyTypes: true, ignoreDeprecations: '6.0' }, }, { title: 'ESNext compatibility', version: 'latest', - compilerOptions: { lib: ['ESNext', 'DOM'] }, + compilerOptions: { ignoreDeprecations: '6.0', lib: ['ESNext', 'DOM'] }, }, ] @@ -56,7 +61,7 @@ runMain(() => { } catch (error) { throw new Error(`${title} compatibility broken`, { cause: error }) } finally { - command`git checkout -- ${TEST_APP_DIR}`.run() + restoreFiles(testAppSnapshot) } } @@ -71,3 +76,22 @@ function modifyTestAppConfig(partialCompilerOptions) { JSON.stringify({ compilerOptions: { ...originalConfig.compilerOptions, ...partialCompilerOptions } }, null, 2) ) } + +function snapshotFiles(filePaths) { + return new Map( + filePaths.map((filePath) => [ + filePath, + fs.existsSync(filePath) ? { exists: true, content: fs.readFileSync(filePath, 'utf8') } : { exists: false }, + ]) + ) +} + +function restoreFiles(snapshot) { + for (const [filePath, fileSnapshot] of snapshot) { + if (fileSnapshot.exists) { + fs.writeFileSync(filePath, fileSnapshot.content) + } else if (fs.existsSync(filePath)) { + fs.rmSync(filePath) + } + } +} diff --git a/scripts/deploy/deploy-oss.js b/scripts/deploy/deploy-oss.js index a4ed765a74..01b9fc3a6f 100644 --- a/scripts/deploy/deploy-oss.js +++ b/scripts/deploy/deploy-oss.js @@ -30,14 +30,14 @@ const client = new OSS({ * Deploy SDK files to ali OSS * Usage: * node deploy-oss.js ${env} ${version} - * env = prod|staging - * version = vXXX + * env = prod|staging + * version = vXXX */ if (require.main === module) { const env = process.argv[2] const version = process.argv[3] - if (env === 'prod' && (version.includes('beta') || version.includes('alpha'))) { + if (env === 'prod' && isPrereleaseVersion(version)) { printError('❌❌❌❌检测到非正式版本,跳过CDN发布,当前版本为:', version) process.exit(1) } @@ -109,6 +109,11 @@ async function refreshCdnCache(ossFilePath) { } } +function isPrereleaseVersion(version) { + return version.includes('-') +} + module.exports = { main, + isPrereleaseVersion, } diff --git a/scripts/deploy/deploy-oss.spec.js b/scripts/deploy/deploy-oss.spec.js new file mode 100644 index 0000000000..a83a956fd6 --- /dev/null +++ b/scripts/deploy/deploy-oss.spec.js @@ -0,0 +1,19 @@ +const assert = require('node:assert/strict') +const { describe, it } = require('node:test') + +process.env.OSS_REGION = 'oss-region' +process.env.OSS_ACCESS_KEY = 'oss-access-key' +process.env.OSS_SECRET_KEY = 'oss-secret-key' +process.env.OSS_BUCKET = 'oss-bucket' + +const { isPrereleaseVersion } = require('./deploy-oss.js') + +void describe('deploy-oss', () => { + void it('detects prerelease versions', () => { + assert.equal(isPrereleaseVersion('v0.0.4-alpha.2'), true) + assert.equal(isPrereleaseVersion('v1.2.3-beta.1'), true) + assert.equal(isPrereleaseVersion('v1.2.3-rc.1'), true) + assert.equal(isPrereleaseVersion('v1.2.3'), false) + assert.equal(isPrereleaseVersion('v0'), false) + }) +}) diff --git a/scripts/deploy/deploy.spec.js b/scripts/deploy/deploy.spec.js index c645f52ecc..b715f27d70 100644 --- a/scripts/deploy/deploy.spec.js +++ b/scripts/deploy/deploy.spec.js @@ -47,36 +47,36 @@ void describe('deploy', () => { { // Logs bundle command: - 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/logs/bundle/datadog-logs.js s3://browser-agent-artifacts-prod/datadog-logs-v6.js', + 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/logs/bundle/flashcat-logs.js s3://browser-agent-artifacts-prod/flashcat-logs-v6.js', env, }, { // Profiler chunk - command: `aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js s3://browser-agent-artifacts-prod/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js`, + command: `aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js s3://browser-agent-artifacts-prod/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js`, env, }, { // RUM chunks: We don't suffix chunk names as they are referenced by the main bundle. Renaming them would require updates via Webpack, adding unnecessary complexity for minimal value. - command: `aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js s3://browser-agent-artifacts-prod/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js`, + command: `aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js s3://browser-agent-artifacts-prod/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js`, env, }, // RUM bundle { command: - 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/datadog-rum.js s3://browser-agent-artifacts-prod/datadog-rum-v6.js', + 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/flashcat-rum.js s3://browser-agent-artifacts-prod/flashcat-rum-v6.js', env, }, // RUM slim bundle { command: - 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum-slim/bundle/datadog-rum-slim.js s3://browser-agent-artifacts-prod/datadog-rum-slim-v6.js', + 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum-slim/bundle/flashcat-rum-slim.js s3://browser-agent-artifacts-prod/flashcat-rum-slim-v6.js', env, }, ]) assert.deepEqual(getCloudfrontCommands(), [ { - command: `aws cloudfront create-invalidation --distribution-id EGB08BYCT1DD9 --paths /datadog-logs-v6.js,/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js,/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js,/datadog-rum-v6.js,/datadog-rum-slim-v6.js`, + command: `aws cloudfront create-invalidation --distribution-id EGB08BYCT1DD9 --paths /flashcat-logs-v6.js,/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js,/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js,/flashcat-rum-v6.js,/flashcat-rum-slim-v6.js`, env, }, ]) @@ -88,32 +88,32 @@ void describe('deploy', () => { assert.deepEqual(getS3Commands(), [ { command: - 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/logs/bundle/datadog-logs.js s3://browser-agent-artifacts-prod/us1/v6/datadog-logs.js', + 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/logs/bundle/flashcat-logs.js s3://browser-agent-artifacts-prod/us1/v6/flashcat-logs.js', env, }, // RUM Profiler Chunk { - command: `aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js s3://browser-agent-artifacts-prod/us1/v6/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js`, + command: `aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js s3://browser-agent-artifacts-prod/us1/v6/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js`, env, }, { - command: `aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js s3://browser-agent-artifacts-prod/us1/v6/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js`, + command: `aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js s3://browser-agent-artifacts-prod/us1/v6/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js`, env, }, { command: - 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/datadog-rum.js s3://browser-agent-artifacts-prod/us1/v6/datadog-rum.js', + 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum/bundle/flashcat-rum.js s3://browser-agent-artifacts-prod/us1/v6/flashcat-rum.js', env, }, { command: - 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum-slim/bundle/datadog-rum-slim.js s3://browser-agent-artifacts-prod/us1/v6/datadog-rum-slim.js', + 'aws s3 cp --cache-control max-age=14400, s-maxage=60 packages/rum-slim/bundle/flashcat-rum-slim.js s3://browser-agent-artifacts-prod/us1/v6/flashcat-rum-slim.js', env, }, ]) assert.deepEqual(getCloudfrontCommands(), [ { - command: `aws cloudfront create-invalidation --distribution-id EGB08BYCT1DD9 --paths /us1/v6/datadog-logs.js,/us1/v6/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js,/us1/v6/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js,/us1/v6/datadog-rum.js,/us1/v6/datadog-rum-slim.js`, + command: `aws cloudfront create-invalidation --distribution-id EGB08BYCT1DD9 --paths /us1/v6/flashcat-logs.js,/us1/v6/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js,/us1/v6/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js,/us1/v6/flashcat-rum.js,/us1/v6/flashcat-rum-slim.js`, env, }, ]) @@ -125,33 +125,33 @@ void describe('deploy', () => { assert.deepEqual(getS3Commands(), [ { command: - 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/logs/bundle/datadog-logs.js s3://browser-agent-artifacts-staging/datadog-logs-staging.js', + 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/logs/bundle/flashcat-logs.js s3://browser-agent-artifacts-staging/flashcat-logs-staging.js', env, }, // RUM Profiler Chunk { - command: `aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js s3://browser-agent-artifacts-staging/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js`, + command: `aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js s3://browser-agent-artifacts-staging/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js`, env, }, { - command: `aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js s3://browser-agent-artifacts-staging/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js`, + command: `aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js s3://browser-agent-artifacts-staging/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js`, env, }, { command: - 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/datadog-rum.js s3://browser-agent-artifacts-staging/datadog-rum-staging.js', + 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/flashcat-rum.js s3://browser-agent-artifacts-staging/flashcat-rum-staging.js', env, }, { command: - 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum-slim/bundle/datadog-rum-slim.js s3://browser-agent-artifacts-staging/datadog-rum-slim-staging.js', + 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum-slim/bundle/flashcat-rum-slim.js s3://browser-agent-artifacts-staging/flashcat-rum-slim-staging.js', env, }, ]) assert.deepEqual(getCloudfrontCommands(), [ { - command: `aws cloudfront create-invalidation --distribution-id E2FP11ZSCFD3EU --paths /datadog-logs-staging.js,/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js,/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js,/datadog-rum-staging.js,/datadog-rum-slim-staging.js`, + command: `aws cloudfront create-invalidation --distribution-id E2FP11ZSCFD3EU --paths /flashcat-logs-staging.js,/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js,/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js,/flashcat-rum-staging.js,/flashcat-rum-slim-staging.js`, env, }, ]) @@ -166,33 +166,33 @@ void describe('deploy', () => { assert.deepEqual(getS3Commands(), [ { command: - 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/logs/bundle/datadog-logs.js s3://browser-agent-artifacts-staging/pull-request/123/datadog-logs.js', + 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/logs/bundle/flashcat-logs.js s3://browser-agent-artifacts-staging/pull-request/123/flashcat-logs.js', env, }, // RUM Profiler Chunk { - command: `aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js s3://browser-agent-artifacts-staging/pull-request/123/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js`, + command: `aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js s3://browser-agent-artifacts-staging/pull-request/123/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js`, env, }, { - command: `aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js s3://browser-agent-artifacts-staging/pull-request/123/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js`, + command: `aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js s3://browser-agent-artifacts-staging/pull-request/123/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js`, env, }, { command: - 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/datadog-rum.js s3://browser-agent-artifacts-staging/pull-request/123/datadog-rum.js', + 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum/bundle/flashcat-rum.js s3://browser-agent-artifacts-staging/pull-request/123/flashcat-rum.js', env, }, { command: - 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum-slim/bundle/datadog-rum-slim.js s3://browser-agent-artifacts-staging/pull-request/123/datadog-rum-slim.js', + 'aws s3 cp --cache-control max-age=900, s-maxage=60 packages/rum-slim/bundle/flashcat-rum-slim.js s3://browser-agent-artifacts-staging/pull-request/123/flashcat-rum-slim.js', env, }, ]) assert.deepEqual(getCloudfrontCommands(), [ { - command: `aws cloudfront create-invalidation --distribution-id E2FP11ZSCFD3EU --paths /pull-request/123/datadog-logs.js,/pull-request/123/chunks/profiler-${FAKE_CHUNK_HASH}-datadog-rum.js,/pull-request/123/chunks/recorder-${FAKE_CHUNK_HASH}-datadog-rum.js,/pull-request/123/datadog-rum.js,/pull-request/123/datadog-rum-slim.js`, + command: `aws cloudfront create-invalidation --distribution-id E2FP11ZSCFD3EU --paths /pull-request/123/flashcat-logs.js,/pull-request/123/chunks/profiler-${FAKE_CHUNK_HASH}-flashcat-rum.js,/pull-request/123/chunks/recorder-${FAKE_CHUNK_HASH}-flashcat-rum.js,/pull-request/123/flashcat-rum.js,/pull-request/123/flashcat-rum-slim.js`, env, }, ]) diff --git a/scripts/deploy/lib/testHelpers.js b/scripts/deploy/lib/testHelpers.js index df9a49a018..0c450520f4 100644 --- a/scripts/deploy/lib/testHelpers.js +++ b/scripts/deploy/lib/testHelpers.js @@ -63,7 +63,7 @@ function rebuildStringTemplate(template, ...values) { function replaceChunkHashes(commandDetail) { return { ...commandDetail, - command: commandDetail.command.replace(/-[a-f0-9]+-datadog-rum/g, `-${FAKE_CHUNK_HASH}-datadog-rum`), + command: commandDetail.command.replace(/-[a-f0-9]+-flashcat-rum/g, `-${FAKE_CHUNK_HASH}-flashcat-rum`), } } diff --git a/scripts/deploy/publish-npm.js b/scripts/deploy/publish-npm.js index 05680e216a..c1b449e125 100644 --- a/scripts/deploy/publish-npm.js +++ b/scripts/deploy/publish-npm.js @@ -1,9 +1,6 @@ const fs = require('fs') const { printLog, runMain } = require('../lib/executionUtils') const { command } = require('../lib/command') -const { getNpmToken } = require('../lib/secrets') -const dotenv = require('dotenv') -dotenv.config() runMain(() => { printLog('Building the project') @@ -12,7 +9,6 @@ runMain(() => { throw new Error('NPM_TOKEN is not set') } printLog('Publishing') - // eslint-disable-next-line no-template-curly-in-string fs.writeFileSync('.npmrc', `//registry.npmjs.org/:_authToken=${process.env.NPM_TOKEN}`) command`yarn lerna publish from-package --yes`.withEnvironment({ NPM_TOKEN: process.env.NPM_TOKEN }).run() }) diff --git a/scripts/deploy/upload-source-maps.spec.js b/scripts/deploy/upload-source-maps.spec.js index 70aeb74f41..e814bcd4e4 100644 --- a/scripts/deploy/upload-source-maps.spec.js +++ b/scripts/deploy/upload-source-maps.spec.js @@ -55,23 +55,23 @@ void describe('upload-source-maps', () => { // rename the files with the version suffix assert.deepEqual(getFileRenamingCommands(), [ { - command: 'mv packages/logs/bundle/datadog-logs.js packages/logs/bundle/datadog-logs-v6.js', + command: 'mv packages/logs/bundle/flashcat-logs.js packages/logs/bundle/flashcat-logs-v6.js', }, { - command: 'mv packages/logs/bundle/datadog-logs.js.map packages/logs/bundle/datadog-logs-v6.js.map', + command: 'mv packages/logs/bundle/flashcat-logs.js.map packages/logs/bundle/flashcat-logs-v6.js.map', }, { - command: 'mv packages/rum/bundle/datadog-rum.js packages/rum/bundle/datadog-rum-v6.js', + command: 'mv packages/rum/bundle/flashcat-rum.js packages/rum/bundle/flashcat-rum-v6.js', }, { - command: 'mv packages/rum/bundle/datadog-rum.js.map packages/rum/bundle/datadog-rum-v6.js.map', + command: 'mv packages/rum/bundle/flashcat-rum.js.map packages/rum/bundle/flashcat-rum-v6.js.map', }, { - command: 'mv packages/rum-slim/bundle/datadog-rum-slim.js packages/rum-slim/bundle/datadog-rum-slim-v6.js', + command: 'mv packages/rum-slim/bundle/flashcat-rum-slim.js packages/rum-slim/bundle/flashcat-rum-slim-v6.js', }, { command: - 'mv packages/rum-slim/bundle/datadog-rum-slim.js.map packages/rum-slim/bundle/datadog-rum-slim-v6.js.map', + 'mv packages/rum-slim/bundle/flashcat-rum-slim.js.map packages/rum-slim/bundle/flashcat-rum-slim-v6.js.map', }, ]) @@ -85,17 +85,17 @@ void describe('upload-source-maps', () => { assert.deepEqual(commandsByDatacenter, [ { command: - 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env, }, { command: - 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env, }, { command: - 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env, }, ]) @@ -108,17 +108,17 @@ void describe('upload-source-maps', () => { assert.deepEqual(commands, [ { command: - 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix /us1/v6 --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix /us1/v6 --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, { command: - 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix /us1/v6 --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix /us1/v6 --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, { command: - 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix /us1/v6 --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix /us1/v6 --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, ]) @@ -130,23 +130,24 @@ void describe('upload-source-maps', () => { // rename the files with the version suffix assert.deepEqual(getFileRenamingCommands(), [ { - command: 'mv packages/logs/bundle/datadog-logs.js packages/logs/bundle/datadog-logs-staging.js', + command: 'mv packages/logs/bundle/flashcat-logs.js packages/logs/bundle/flashcat-logs-staging.js', }, { - command: 'mv packages/logs/bundle/datadog-logs.js.map packages/logs/bundle/datadog-logs-staging.js.map', + command: 'mv packages/logs/bundle/flashcat-logs.js.map packages/logs/bundle/flashcat-logs-staging.js.map', }, { - command: 'mv packages/rum/bundle/datadog-rum.js packages/rum/bundle/datadog-rum-staging.js', + command: 'mv packages/rum/bundle/flashcat-rum.js packages/rum/bundle/flashcat-rum-staging.js', }, { - command: 'mv packages/rum/bundle/datadog-rum.js.map packages/rum/bundle/datadog-rum-staging.js.map', + command: 'mv packages/rum/bundle/flashcat-rum.js.map packages/rum/bundle/flashcat-rum-staging.js.map', }, { - command: 'mv packages/rum-slim/bundle/datadog-rum-slim.js packages/rum-slim/bundle/datadog-rum-slim-staging.js', + command: + 'mv packages/rum-slim/bundle/flashcat-rum-slim.js packages/rum-slim/bundle/flashcat-rum-slim-staging.js', }, { command: - 'mv packages/rum-slim/bundle/datadog-rum-slim.js.map packages/rum-slim/bundle/datadog-rum-slim-staging.js.map', + 'mv packages/rum-slim/bundle/flashcat-rum-slim.js.map packages/rum-slim/bundle/flashcat-rum-slim-staging.js.map', }, ]) @@ -154,32 +155,32 @@ void describe('upload-source-maps', () => { assert.deepEqual(getSourceMapCommands(), [ { command: - 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_STAGING, }, { command: - 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, { command: - 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_STAGING, }, { command: - 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, { command: - 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_STAGING, }, { command: - 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, ]) @@ -191,23 +192,24 @@ void describe('upload-source-maps', () => { // rename the files with the version suffix assert.deepEqual(getFileRenamingCommands(), [ { - command: 'mv packages/logs/bundle/datadog-logs.js packages/logs/bundle/datadog-logs-canary.js', + command: 'mv packages/logs/bundle/flashcat-logs.js packages/logs/bundle/flashcat-logs-canary.js', }, { - command: 'mv packages/logs/bundle/datadog-logs.js.map packages/logs/bundle/datadog-logs-canary.js.map', + command: 'mv packages/logs/bundle/flashcat-logs.js.map packages/logs/bundle/flashcat-logs-canary.js.map', }, { - command: 'mv packages/rum/bundle/datadog-rum.js packages/rum/bundle/datadog-rum-canary.js', + command: 'mv packages/rum/bundle/flashcat-rum.js packages/rum/bundle/flashcat-rum-canary.js', }, { - command: 'mv packages/rum/bundle/datadog-rum.js.map packages/rum/bundle/datadog-rum-canary.js.map', + command: 'mv packages/rum/bundle/flashcat-rum.js.map packages/rum/bundle/flashcat-rum-canary.js.map', }, { - command: 'mv packages/rum-slim/bundle/datadog-rum-slim.js packages/rum-slim/bundle/datadog-rum-slim-canary.js', + command: + 'mv packages/rum-slim/bundle/flashcat-rum-slim.js packages/rum-slim/bundle/flashcat-rum-slim-canary.js', }, { command: - 'mv packages/rum-slim/bundle/datadog-rum-slim.js.map packages/rum-slim/bundle/datadog-rum-slim-canary.js.map', + 'mv packages/rum-slim/bundle/flashcat-rum-slim.js.map packages/rum-slim/bundle/flashcat-rum-slim-canary.js.map', }, ]) @@ -215,17 +217,17 @@ void describe('upload-source-maps', () => { assert.deepEqual(getSourceMapCommands(), [ { command: - 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/logs/bundle --service browser-logs-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-logs/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, { command: - 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, { command: - 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/datadog/browser-sdk', + 'datadog-ci sourcemaps upload packages/rum-slim/bundle --service browser-rum-sdk --release-version dev --minified-path-prefix / --project-path @flashcatcloud/browser-rum-slim/ --repository-url https://www.github.com/flashcatcloud/browser-sdk', env: ENV_PROD, }, ]) diff --git a/test/apps/react/yarn.lock b/test/apps/react/yarn.lock index 53f95c626d..7a59b63e4e 100644 --- a/test/apps/react/yarn.lock +++ b/test/apps/react/yarn.lock @@ -6,27 +6,27 @@ __metadata: cacheKey: 10c0 "@flashcatcloud/browser-core@file:../../../packages/core/package.tgz::locator=react-app%40workspace%3A.": - version: 0.0.3-beta.0 - resolution: "@flashcatcloud/browser-core@file:../../../packages/core/package.tgz#../../../packages/core/package.tgz::hash=ad9c33&locator=react-app%40workspace%3A." - checksum: 10c0/706a693aec2bcfa8841a261ae6df1553e9aa7483994346a050d54fb0d78c1404a2252b3739b9f26c673de10a910f2e2b4533e39fe4fedd52dee5584c68f2f110 + version: 0.0.2 + resolution: "@flashcatcloud/browser-core@file:../../../packages/core/package.tgz#../../../packages/core/package.tgz::hash=eec4a2&locator=react-app%40workspace%3A." + checksum: 10c0/491befa1fd4c62e65159d79913e3ab520ef154f4cc46caa78ff211def53e6b48c0d5cfdbd0cb7e380aecb0d078e5926199f06ee2627f5e444750bb76230f448d languageName: node linkType: hard "@flashcatcloud/browser-rum-core@file:../../../packages/rum-core/package.tgz::locator=react-app%40workspace%3A.": - version: 0.0.3-beta.0 - resolution: "@flashcatcloud/browser-rum-core@file:../../../packages/rum-core/package.tgz#../../../packages/rum-core/package.tgz::hash=9da868&locator=react-app%40workspace%3A." + version: 0.0.2 + resolution: "@flashcatcloud/browser-rum-core@file:../../../packages/rum-core/package.tgz#../../../packages/rum-core/package.tgz::hash=aa6d91&locator=react-app%40workspace%3A." dependencies: - "@flashcatcloud/browser-core": "npm:0.0.3-beta.0" - checksum: 10c0/8260af2795b940cb9696b5ed781c6d1c81d619bde97143df4719720bcc9c9250e075b4f3c9aa90ee81467d1539a4477d74439da0074f05b959c7d3451195ff17 + "@flashcatcloud/browser-core": "npm:0.0.2" + checksum: 10c0/6a0c6e88b00807e0bca34360038073731235c3d30400b0fcd1f59b100500c47661a006dcb806bb89e3fd2ad3e3f725725010957654d0ac59630b94a72076c7fc languageName: node linkType: hard "@flashcatcloud/browser-rum-react@file:../../../packages/rum-react/package.tgz::locator=react-app%40workspace%3A.": - version: 0.0.3-beta.0 - resolution: "@flashcatcloud/browser-rum-react@file:../../../packages/rum-react/package.tgz#../../../packages/rum-react/package.tgz::hash=019013&locator=react-app%40workspace%3A." + version: 0.0.2 + resolution: "@flashcatcloud/browser-rum-react@file:../../../packages/rum-react/package.tgz#../../../packages/rum-react/package.tgz::hash=eae4fd&locator=react-app%40workspace%3A." dependencies: - "@flashcatcloud/browser-core": "npm:0.0.3-beta.0" - "@flashcatcloud/browser-rum-core": "npm:0.0.3-beta.0" + "@flashcatcloud/browser-core": "npm:0.0.2" + "@flashcatcloud/browser-rum-core": "npm:0.0.2" peerDependencies: react: 18 || 19 react-router-dom: 6 || 7 @@ -39,22 +39,22 @@ __metadata: optional: true react-router-dom: optional: true - checksum: 10c0/fa6567cc0bf1aaaa199225d31b673146682e5fd56b15a7e937e611f57fa1e012923447c623ca5038fb025e655f1ab62c1663b5af237dcf05c8cd933fab1adac7 + checksum: 10c0/c01149d8e0d5c8f40f85ac28a5e25fbe8c9b8541c22c0279291897c17934832727e1118abf75fda35068c022feef380b4afca4ac5452b9dc9665a4f487b6f1f3 languageName: node linkType: hard "@flashcatcloud/browser-rum@file:../../../packages/rum/package.tgz::locator=react-app%40workspace%3A.": - version: 0.0.3-beta.0 - resolution: "@flashcatcloud/browser-rum@file:../../../packages/rum/package.tgz#../../../packages/rum/package.tgz::hash=0bbbd2&locator=react-app%40workspace%3A." + version: 0.0.2 + resolution: "@flashcatcloud/browser-rum@file:../../../packages/rum/package.tgz#../../../packages/rum/package.tgz::hash=72cede&locator=react-app%40workspace%3A." dependencies: - "@flashcatcloud/browser-core": "npm:0.0.3-beta.0" - "@flashcatcloud/browser-rum-core": "npm:0.0.3-beta.0" + "@flashcatcloud/browser-core": "npm:0.0.2" + "@flashcatcloud/browser-rum-core": "npm:0.0.2" peerDependencies: - "@flashcatcloud/browser-logs": 0.0.3-beta.0 + "@flashcatcloud/browser-logs": 0.0.2 peerDependenciesMeta: "@flashcatcloud/browser-logs": optional: true - checksum: 10c0/7f65567bb615a9d2a78c9c9cfd217896083476b31743a2a7e1885ad7bc986cb90d12524c864d2a660c766e62627cc711ceb65b5fe0f5739673ce4f2d6cfc9f67 + checksum: 10c0/ca54e2dee24d9eda30d6e9b80dbc9dddb0816624d96ddb3d15e00721204e4cc55c761358d72ddce9962624775fb16edf86ac3f6f0f9e598f32d07300729a581a languageName: node linkType: hard diff --git a/test/apps/vanilla/package.json b/test/apps/vanilla/package.json index ea6874175f..4b2d16769b 100644 --- a/test/apps/vanilla/package.json +++ b/test/apps/vanilla/package.json @@ -11,7 +11,7 @@ "@flashcatcloud/browser-rum": "file:../../../packages/rum/package.tgz" }, "resolutions": { - "@flashcatcloud/browser-rum": "file:../../../packages/core/package.tgz", + "@flashcatcloud/browser-core": "file:../../../packages/core/package.tgz", "@flashcatcloud/browser-rum-core": "file:../../../packages/rum-core/package.tgz", "@flashcatcloud/browser-rum-react": "file:../../../packages/rum-react/package.tgz", "@flashcatcloud/browser-rum-slim": "file:../../../packages/rum-slim/package.tgz", diff --git a/test/apps/vanilla/yarn.lock b/test/apps/vanilla/yarn.lock index b33a417336..c055e346c6 100644 --- a/test/apps/vanilla/yarn.lock +++ b/test/apps/vanilla/yarn.lock @@ -5,46 +5,48 @@ __metadata: version: 8 cacheKey: 10c0 -"@flashcatcloud/browser-core@portal:../../packages/core::locator=app%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@flashcatcloud/browser-core@portal:../../packages/core::locator=app%40workspace%3A." +"@flashcatcloud/browser-core@file:../../../packages/core/package.tgz::locator=app%40workspace%3A.": + version: 0.0.2 + resolution: "@flashcatcloud/browser-core@file:../../../packages/core/package.tgz#../../../packages/core/package.tgz::hash=eec4a2&locator=app%40workspace%3A." + checksum: 10c0/491befa1fd4c62e65159d79913e3ab520ef154f4cc46caa78ff211def53e6b48c0d5cfdbd0cb7e380aecb0d078e5926199f06ee2627f5e444750bb76230f448d languageName: node linkType: hard -"@flashcatcloud/browser-logs@portal:../../packages/logs::locator=app%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@flashcatcloud/browser-logs@portal:../../packages/logs::locator=app%40workspace%3A." +"@flashcatcloud/browser-logs@file:../../../packages/logs/package.tgz::locator=app%40workspace%3A.": + version: 0.0.2 + resolution: "@flashcatcloud/browser-logs@file:../../../packages/logs/package.tgz#../../../packages/logs/package.tgz::hash=bd8c06&locator=app%40workspace%3A." dependencies: - "@flashcatcloud/browser-core": "workspace:*" + "@flashcatcloud/browser-core": "npm:0.0.2" peerDependencies: "@flashcatcloud/browser-rum": 0.0.2 peerDependenciesMeta: "@flashcatcloud/browser-rum": optional: true - checksum: 10c0/9484ab0fc7b970f1b40a17babe894c5fef851ce1ed95d824ec5c733f2630e2900554674e0eafeabbd48ad09b2a50f466b045bb18bf1c8bec3ac1ea281c414a62 + checksum: 10c0/390e81ca869c704e2b422213c237fe9e903701f399aadc4acb7b9eb18c0c7d738b2a9abf9a800ca92adc05ce104046dd3d18e25cbc9a0568412dd6871f364e0a languageName: node linkType: hard -"@flashcatcloud/browser-rum-core@portal:../../packages/rum-core::locator=app%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@flashcatcloud/browser-rum-core@portal:../../packages/rum-core::locator=app%40workspace%3A." +"@flashcatcloud/browser-rum-core@file:../../../packages/rum-core/package.tgz::locator=app%40workspace%3A.": + version: 0.0.2 + resolution: "@flashcatcloud/browser-rum-core@file:../../../packages/rum-core/package.tgz#../../../packages/rum-core/package.tgz::hash=aa6d91&locator=app%40workspace%3A." dependencies: - "@flashcatcloud/browser-core": "workspace:*" + "@flashcatcloud/browser-core": "npm:0.0.2" + checksum: 10c0/6a0c6e88b00807e0bca34360038073731235c3d30400b0fcd1f59b100500c47661a006dcb806bb89e3fd2ad3e3f725725010957654d0ac59630b94a72076c7fc languageName: node linkType: hard -"@flashcatcloud/browser-rum@portal:../../packages/rum::locator=app%40workspace%3A.": - version: 0.0.0-use.local - resolution: "@flashcatcloud/browser-rum@portal:../../packages/rum::locator=app%40workspace%3A." +"@flashcatcloud/browser-rum@file:../../../packages/rum/package.tgz::locator=app%40workspace%3A.": + version: 0.0.2 + resolution: "@flashcatcloud/browser-rum@file:../../../packages/rum/package.tgz#../../../packages/rum/package.tgz::hash=72cede&locator=app%40workspace%3A." dependencies: - "@flashcatcloud/browser-core": "workspace:*" - "@flashcatcloud/browser-rum-core": "workspace:*" + "@flashcatcloud/browser-core": "npm:0.0.2" + "@flashcatcloud/browser-rum-core": "npm:0.0.2" peerDependencies: "@flashcatcloud/browser-logs": 0.0.2 peerDependenciesMeta: "@flashcatcloud/browser-logs": optional: true - checksum: 10c0/0875ca87e932e580084a7ba0da117ffddb45874d3c5d124d1e46eb18c5b00b416fdf894da70363ccaa7d4d3ab50fb4884052b78368e900cfcbe6c31bf5eca6f5 + checksum: 10c0/ca54e2dee24d9eda30d6e9b80dbc9dddb0816624d96ddb3d15e00721204e4cc55c761358d72ddce9962624775fb16edf86ac3f6f0f9e598f32d07300729a581a languageName: node linkType: hard @@ -354,10 +356,8 @@ __metadata: version: 0.0.0-use.local resolution: "app@workspace:." dependencies: - "@flashcatcloud/browser-core": "portal:../../packages/core" - "@flashcatcloud/browser-logs": "portal:../../packages/logs" - "@flashcatcloud/browser-rum": "portal:../../packages/rum" - "@flashcatcloud/browser-rum-core": "portal:../../packages/rum-core" + "@flashcatcloud/browser-logs": "file:../../../packages/logs/package.tgz" + "@flashcatcloud/browser-rum": "file:../../../packages/rum/package.tgz" ts-loader: "npm:6.2.1" typescript: "npm:3.8.2" webpack: "npm:5.94.0" diff --git a/test/e2e/lib/framework/httpServers.ts b/test/e2e/lib/framework/httpServers.ts index 1774f4aa9f..ab1d3d8e5d 100644 --- a/test/e2e/lib/framework/httpServers.ts +++ b/test/e2e/lib/framework/httpServers.ts @@ -7,6 +7,7 @@ const MAX_SERVER_CREATION_RETRY = 5 // Pick a ports in range 9200-9400 const PORT_MIN = 9200 const PORT_MAX = 9400 +const isBrowserStack = !!process.env.BROWSER_STACK export type ServerApp = (req: http.IncomingMessage, res: http.ServerResponse) => any @@ -72,6 +73,10 @@ async function createServer(): Promise> { } async function instantiateServer(): Promise { + if (!isBrowserStack) { + return instantiateServerOnPort(0) + } + for (let tryNumber = 0; tryNumber < MAX_SERVER_CREATION_RETRY; tryNumber += 1) { const port = PORT_MIN + Math.floor(Math.random() * (PORT_MAX - PORT_MIN + 1)) diff --git a/test/e2e/lib/framework/pageSetups.ts b/test/e2e/lib/framework/pageSetups.ts index ddf2ee6994..900c6fef85 100644 --- a/test/e2e/lib/framework/pageSetups.ts +++ b/test/e2e/lib/framework/pageSetups.ts @@ -54,7 +54,7 @@ n=o.getElementsByTagName(u)[0];n.parentNode.insertBefore(d,n) if (options.logs) { body += html` +