Browse Source

ref(getting-started-docs): Migrate Node doc to sentry main repo (#52875)

Migrate the basic Node (no framework) onboarding/getting started doc
to to the Sentry main repo
Lukas Stracke 1 year ago
parent
commit
d4a1abda1f

+ 1 - 0
static/app/components/onboarding/gettingStartedDoc/sdkDocumentation.tsx

@@ -29,6 +29,7 @@ export const migratedDocs = [
   'minidump',
   'native',
   'native-qt',
+  'node',
 ];
 
 type SdkDocumentationProps = {

+ 20 - 0
static/app/gettingStartedDocs/node/node.spec.tsx

@@ -0,0 +1,20 @@
+import {render, screen} from 'sentry-test/reactTestingLibrary';
+
+import {StepTitle} from 'sentry/components/onboarding/gettingStartedDoc/step';
+
+import {GettingStartedWithNode, steps} from './node';
+
+describe('GettingStartedWithNode', function () {
+  it('all products are selected', function () {
+    const {container} = render(<GettingStartedWithNode dsn="test-dsn" />);
+
+    // Steps
+    for (const step of steps()) {
+      expect(
+        screen.getByRole('heading', {name: step.title ?? StepTitle[step.type]})
+      ).toBeInTheDocument();
+    }
+
+    expect(container).toSnapshot();
+  });
+});

+ 95 - 0
static/app/gettingStartedDocs/node/node.tsx

@@ -0,0 +1,95 @@
+import {Layout, LayoutProps} from 'sentry/components/onboarding/gettingStartedDoc/layout';
+import {ModuleProps} from 'sentry/components/onboarding/gettingStartedDoc/sdkDocumentation';
+import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step';
+import {getUploadSourceMapsStep} from 'sentry/components/onboarding/gettingStartedDoc/utils';
+import {t, tct} from 'sentry/locale';
+
+const performanceOtherConfig = `
+// Performance Monitoring
+tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production!`;
+
+export const steps = ({
+  sentryInitContent,
+}: {
+  sentryInitContent?: string;
+} = {}): LayoutProps['steps'] => [
+  {
+    type: StepType.INSTALL,
+    description: t('Add the Sentry Node SDK as a dependency:'),
+    configurations: [
+      {
+        language: 'bash',
+        code: `
+# Using yarn
+yarn add @sentry/node
+
+# Using npm
+npm install --save @sentry/node
+        `,
+      },
+    ],
+  },
+  {
+    type: StepType.CONFIGURE,
+    description: (
+      <p>
+        {tct(
+          "Initialize Sentry as early as possible in your application's lifecycle, for example in your [code:index.ts/js] entry point:",
+          {code: <code />}
+        )}
+      </p>
+    ),
+    configurations: [
+      {
+        language: 'javascript',
+        code: `
+        const Sentry = require("@sentry/node");
+        // or use ESM import statements
+        // import * as Sentry from '@sentry/node';
+
+        Sentry.init({
+          ${sentryInitContent}
+        });
+        `,
+      },
+    ],
+  },
+  getUploadSourceMapsStep('https://docs.sentry.io/platforms/node/sourcemaps/'),
+  {
+    type: StepType.VERIFY,
+    description: t(
+      "This snippet contains an intentional error and can be used as a test to make sure that everything's working as expected."
+    ),
+    configurations: [
+      {
+        language: 'javascript',
+        code: `
+        const transaction = Sentry.startTransaction({
+          op: "test",
+          name: "My First Test Transaction",
+        });
+
+        setTimeout(() => {
+          try {
+            foo();
+          } catch (e) {
+            Sentry.captureException(e);
+          } finally {
+            transaction.finish();
+          }
+        }, 99);
+        `,
+      },
+    ],
+  },
+];
+
+export function GettingStartedWithNode({dsn, ...props}: ModuleProps) {
+  const sentryInitContent: string[] = [`dsn: "${dsn}",`, performanceOtherConfig];
+
+  return (
+    <Layout steps={steps({sentryInitContent: sentryInitContent.join('\n')})} {...props} />
+  );
+}
+
+export default GettingStartedWithNode;