Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import * as Sentry from '@sentry/astro';

Sentry.init({
traceLifecycle: 'static',
dsn: import.meta.env.PUBLIC_E2E_TEST_DSN,
environment: 'qa',
tracesSampleRate: 1.0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,2 @@
import * as Sentry from '@sentry/astro';

Sentry.init({
traceLifecycle: 'static',
dsn: import.meta.env.PUBLIC_E2E_TEST_DSN,
environment: 'qa',
tracesSampleRate: 1.0,
tunnel: 'http://localhost:3031/', // proxy server
});
// The Worker wrapper initializes Sentry from Wrangler bindings.
// Keep this file to prevent Astro from injecting its default Node SDK initialization.
Original file line number Diff line number Diff line change
@@ -1,31 +1,29 @@
import { expect, test } from '@playwright/test';
import { waitForTransaction } from '@sentry-internal/test-utils';
import { getSpanOp, waitForStreamedSpan } from '@sentry-internal/test-utils';

test.describe('Astro actions', () => {
test('captures transaction for action call', async ({ page }) => {
const transactionEventPromise = waitForTransaction('astro-5-cf-workers', transactionEvent => {
return transactionEvent.transaction === 'GET /action-test';
test('captures span for action call', async ({ page }) => {
const spanPromise = waitForStreamedSpan('astro-5-cf-workers', span => {
return getSpanOp(span) === 'http.server' && span.is_segment && span.name === 'GET /action-test';
});

await page.goto('/action-test');

const transactionEvent = await transactionEventPromise;
const span = await spanPromise;

expect(transactionEvent).toMatchObject({
transaction: 'GET /action-test',
expect(span).toMatchObject({
name: 'GET /action-test',
});

const traceId = transactionEvent.contexts?.trace?.trace_id;
const traceId = span.trace_id;
expect(traceId).toMatch(/[a-f0-9]{32}/);
});

test('action submission creates a transaction', async ({ page }) => {
test('action submission creates a span', async ({ page }) => {
await page.goto('/action-test');

const transactionEventPromise = waitForTransaction('astro-5-cf-workers', transactionEvent => {
return (
transactionEvent.transaction?.includes('action-test') && transactionEvent.transaction !== 'GET /action-test'
);
const spanPromise = waitForStreamedSpan('astro-5-cf-workers', span => {
return getSpanOp(span) === 'http.server' && span.is_segment && span.name === 'POST /_actions/[...path]';
});

await page.getByText('Submit Action').click();
Expand All @@ -36,8 +34,8 @@ test.describe('Astro actions', () => {
const resultText = await page.locator('#result').textContent();
expect(resultText).toContain('success');

const transactionEvent = await transactionEventPromise;
expect(transactionEvent).toBeDefined();
expect(transactionEvent.contexts?.trace?.trace_id).toMatch(/[a-f0-9]{32}/);
const span = await spanPromise;
expect(span).toBeDefined();
expect(span.trace_id).toMatch(/[a-f0-9]{32}/);
});
});
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { expect, test } from '@playwright/test';
import { waitForError, waitForTransaction } from '@sentry-internal/test-utils';
import { getSpanOp, waitForError, waitForStreamedSpan } from '@sentry-internal/test-utils';

test.describe('server-side errors', () => {
test('captures SSR error', async ({ page }) => {
const errorEventPromise = waitForError('astro-5-cf-workers', errorEvent => {
return errorEvent?.exception?.values?.[0]?.value === "Cannot read properties of undefined (reading 'x')";
});

const transactionEventPromise = waitForTransaction('astro-5-cf-workers', transactionEvent => {
return transactionEvent.transaction === 'GET /ssr-error';
const spanPromise = waitForStreamedSpan('astro-5-cf-workers', span => {
return getSpanOp(span) === 'http.server' && span.is_segment && span.name === 'GET /ssr-error';
});

// This page returns an error status code, so we need to catch the navigation error
Expand All @@ -17,14 +17,14 @@ test.describe('server-side errors', () => {
});

const errorEvent = await errorEventPromise;
const transactionEvent = await transactionEventPromise;
const span = await spanPromise;

expect(transactionEvent).toMatchObject({
transaction: 'GET /ssr-error',
expect(span).toMatchObject({
name: 'GET /ssr-error',
});

const traceId = transactionEvent.contexts?.trace?.trace_id;
const spanId = transactionEvent.contexts?.trace?.span_id;
const traceId = span.trace_id;
const spanId = span.span_id;

expect(traceId).toMatch(/[a-f0-9]{32}/);
expect(spanId).toMatch(/[a-f0-9]{16}/);
Expand Down Expand Up @@ -73,30 +73,30 @@ test.describe('server-side errors', () => {
const errorEventPromise = waitForError('astro-5-cf-workers', errorEvent => {
return errorEvent?.exception?.values?.[0]?.value === 'Endpoint Error';
});
const transactionEventApiPromise = waitForTransaction('astro-5-cf-workers', transactionEvent => {
return transactionEvent.transaction === 'GET /endpoint-error/api';
const apiSpanPromise = waitForStreamedSpan('astro-5-cf-workers', span => {
return getSpanOp(span) === 'http.server' && span.is_segment && span.name === 'GET /endpoint-error/api';
});
const transactionEventEndpointPromise = waitForTransaction('astro-5-cf-workers', transactionEvent => {
return transactionEvent.transaction === 'GET /endpoint-error';
const endpointSpanPromise = waitForStreamedSpan('astro-5-cf-workers', span => {
return getSpanOp(span) === 'http.server' && span.is_segment && span.name === 'GET /endpoint-error';
});

await page.goto('/endpoint-error');
await page.getByText('Get Data').click();

const errorEvent = await errorEventPromise;
const transactionEventApi = await transactionEventApiPromise;
const transactionEventEndpoint = await transactionEventEndpointPromise;
const apiSpan = await apiSpanPromise;
const endpointSpan = await endpointSpanPromise;

expect(transactionEventEndpoint).toMatchObject({
transaction: 'GET /endpoint-error',
expect(endpointSpan).toMatchObject({
name: 'GET /endpoint-error',
});

const traceId = transactionEventEndpoint.contexts?.trace?.trace_id;
const traceId = endpointSpan.trace_id;

expect(traceId).toMatch(/[a-f0-9]{32}/);

expect(transactionEventApi).toMatchObject({
transaction: 'GET /endpoint-error/api',
expect(apiSpan).toMatchObject({
name: 'GET /endpoint-error/api',
});
Comment thread
nicohrubec marked this conversation as resolved.

expect(errorEvent).toMatchObject({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
"SENTRY_ENVIRONMENT": "qa",
"SENTRY_TRACES_SAMPLE_RATE": "1.0",
"SENTRY_TUNNEL": "http://localhost:3031/",
"SENTRY_TRACE_LIFECYCLE": "static",
},
"assets": {
"binding": "ASSETS",
Expand Down
Loading