Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(Getting Started): Improve overview and explain options #4055

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
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
2 changes: 1 addition & 1 deletion docs/docs/configuration/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Tracetest supports [two types of tracing backend integrations](/configuration/co
- OTLP ingest endpoint

:::note Want to see your options?
[View the list of supported tracing backends, here.](/configuration/connecting-to-data-stores/overview#supported-tracing-backends)
[View the list of supported tracing backends, here.](/configuration/connecting-to-data-stores/overview#otlp-ingest-endpoint)
:::

## Access and Tracing Backend Configuration Examples
Expand Down
55 changes: 53 additions & 2 deletions docs/docs/getting-started/configure-trace-ingestion.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
id: configure-trace-ingestion
title: Configure Trace Ingestion
description: Get started by configuring trace ingestion to connect traces to tests. Tracetest allows you to quickly build integration and end-to-end tests, powered by your OpenTelemetry traces.
hide_table_of_contents: false
hide_table_of_contents: true
keywords:
- tracetest
- trace-based testing
Expand Down Expand Up @@ -436,6 +436,57 @@ rails server -p 8080
[Visit the example in GitHub, here.](https://github.com/kubeshop/tracetest/tree/main/examples/getting-started/ruby)
:::

</TabItem>
<TabItem value="php" label="PHP">

1. Install OpenTelemetry Extension for PHP

```bash title="Terminal"
pecl install opentelemetry
```

2. Install `composer` if not installed already

```bash title="Terminal"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

# If you want to use Composer globally from any directory, move it to a directory in your PATH:
sudo mv composer.phar /usr/local/bin/composer
composer --version
```

3. Install OpenTelemetry SDK for your libraries

[View all libraries here.](https://packagist.org/search/?query=open-telemetry&tags=instrumentation) The example below showcases Laravel.

```bash
composer require \
open-telemetry/sdk \
open-telemetry/exporter-otlp \
open-telemetry/opentelemetry-auto-laravel
# ...
```

4. Configure OpenTelemetry in `php.ini`

```ini
[opentelemetry]
extension=opentelemetry.so

OTEL_PHP_AUTOLOAD_ENABLED="true"
OTEL_SERVICE_NAME=your-php-app
OTEL_TRACES_EXPORTER=otlp
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_PROPAGATORS=baggage,tracecontext
```

:::note View a code sample
[Visit the example in GitHub, here.](https://github.com/kubeshop/tracetest/tree/main/examples/getting-started/php)
:::

</TabItem>
<TabItem value="browser" label="Browser">

Expand Down Expand Up @@ -625,7 +676,7 @@ spec:
This will automatically instrument your service with OpenTelemetry and send the traces to the OpenTelemetry collector.

</TabItem>
<TabItem value="otelcol" label="OTel Collector">
<TabItem value="otelcol" label="OpenTelemetry&nbsp;Collector">

You can configure OpenTelemetry SDKs to export traces to an [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) first. Then, configure an exporter and service pipeline to forward traces to Tracetest.

Expand Down
25 changes: 14 additions & 11 deletions docs/docs/getting-started/create-response-based-test.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
id: create-response-based-test
title: Create a Response-based Test
description: Get started by creating a response-based test in Tracetest! Tracetest allows you to quickly build integration and end-to-end tests, powered by your OpenTelemetry traces.
hide_table_of_contents: false
hide_table_of_contents: true
keywords:
- tracetest
- trace-based testing
Expand All @@ -21,16 +21,18 @@ import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
import GtagInstallCliTabs from '@site/src/components/GtagInstallCliTabs';

To create a test, you define a `trigger`. A trigger is an action that executes an action against your system. The most basic trigger is an HTTP requests, but we support several trigger types.
To create a test, you define a `trigger`. A trigger is an action that executes an action against your system.

1. Playwright
2. HTTP
3. GRPC
4. GraphQL
5. Kafka
The most basic trigger is an HTTP requests, but Tracetest supports several trigger types.

1. HTTP
2. GRPC
3. GraphQL
4. Kafka
5. Playwright

:::note
Playwright enables a useful technique: True end-to-end testing, where you start tests from the Web UI and explore the entire internal process of that request across the back end, database, and external services.
[Playwright enables a useful technique](/examples-tutorials/recipes/running-tests-with-tracetest-playwright-engine): True end-to-end testing, where you start tests from the Web UI and explore the entire internal process of that request across the back end, database, and external services.
:::

You can create tests in two ways:
Expand Down Expand Up @@ -68,8 +70,9 @@ tracetest run test -f ./ping-google.yaml

Create a test in the Web UI by opening your Tracetest Account, clicking the Create button, and selecting HTTP.

![create response based test 1](https://res.cloudinary.com/djwdcmwdz/image/upload/v1727177155/docs/app.tracetest.io_organizations_ttorg_e66318ba6544b856_environments_ttenv_ed85b0979257d37b_tests_page_1_qc1291.png)

Enter `https://google.com` as the URL, and click Run.

![create response based test 2](https://res.cloudinary.com/djwdcmwdz/image/upload/v1727177429/docs/app.tracetest.io_organizations_ttorg_e66318ba6544b856_environments_ttenv_ed85b0979257d37b_tests_page_1_1_qpqa4w.png)
<p align="center">
<img src="https://res.cloudinary.com/djwdcmwdz/image/upload/v1727177155/docs/app.tracetest.io_organizations_ttorg_e66318ba6544b856_environments_ttenv_ed85b0979257d37b_tests_page_1_qc1291.png" alt="test 1" width="50%" />
<img src="https://res.cloudinary.com/djwdcmwdz/image/upload/v1727177429/docs/app.tracetest.io_organizations_ttorg_e66318ba6544b856_environments_ttenv_ed85b0979257d37b_tests_page_1_1_qpqa4w.png" alt="test 2" width="50%" />
</p>
2 changes: 1 addition & 1 deletion docs/docs/getting-started/install-agent.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import GtagInstallCliTabs from '@site/src/components/GtagInstallCliTabs';
1. Run tests against your apps.
2. Ingest traces from your apps.

This page explains (1), how to start Tracetest Agent to enable running tests against your apps. Tracetest Agent can run either locally on your machine or as a container in Docker or Kubernetes.
This page explains (1), how to start Tracetest Agent (locally on your machine or as a container) to enable running tests against your apps.

<Tabs groupId="installation">
<TabItem value="cli" label="Tracetest CLI" default>
Expand Down
51 changes: 21 additions & 30 deletions docs/docs/getting-started/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,28 +17,35 @@ image: https://res.cloudinary.com/djwdcmwdz/image/upload/v1698686403/docs/Blog_T
---

```mdx-code-block
import {TracetestGettingStartedGuideCardsRow, TracetestCoreGettingStartedGuideCardsRow} from '@site/src/components/GettingStartedGuide';
import {TracetestCoreGettingStartedGuideCardsRow, TracetestCloudGettingStartedGuidesRow, TracetestOnPremGettingStartedGuidesRow} from '@site/src/components/GettingStartedGuide';
```

Tracetest is a cloud-native application, designed to run in the cloud. Get started in three ways.
There are three ways to set up your development environment and install Tracetest. Testing locally with Tracetest CLI installed on your computer and using Cloud-based Managed Tracetest for test and trace artifact storage is the most common scenario.

- **[Cloud-based Managed Tracetest](https://app.tracetest.io/) (Free to get started!)**: Use managed infrastructure with collaboration for teams, and additional features on top of Tracetest Core.
- **[Enterprise Self-hosted Tracetest](https://tracetest.io/on-prem-installation) (Free trial, no credit card required)**: Same experience as with Cloud-based Managed Tracetest but self-hosted in your own infrastructure. **([Request a demo!](https://dub.sh/tracetest-demo))**
- **[Hobby Self-hosted Open-source Tracetest Core](/core/getting-started/overview)**: Deploy a hobby instance in your own infrastructure with Docker or Kubernetes. Not suitable for production workloads.
```mdx-code-block
<TracetestCloudGettingStartedGuidesRow />
<TracetestOnPremGettingStartedGuidesRow />
<TracetestCoreGettingStartedGuideCardsRow />
```

## Cloud-based Managed Tracetest and Enterprise Self-hosted Tracetest
## Open-source vs Commercial Tracetest

**We recommend using [Cloud-based Managed Tracetest](https://app.tracetest.io/)**. It's the easiest way to test microservices and distributed apps with OpenTelemetry distributed traces. Tracetest provides managed infrastructure, [collaboration for teams](/concepts/environments), [RBAC](/concepts/roles-and-permissions), [organizations](/concepts/organizations), [dependency-free config](/concepts/agent), [agentless serverless config](/concepts/cloud-agent), and much more.
- **We recommend using [Cloud-based Managed Tracetest](https://app.tracetest.io/)**. It's the easiest way to test web apps, APIs, microservices, and distributed apps with OpenTelemetry distributed traces. Tracetest provides managed infrastructure, [collaboration for teams](/concepts/environments), [RBAC](/concepts/roles-and-permissions), [organizations](/concepts/organizations), [dependency-free config](/concepts/agent), [agentless serverless config](/concepts/cloud-agent), and much more.

Get started with the installation guide below, tailored for microservice and distributed app developers. You may find it insightful even if you have [one of many other supported use cases](/examples-tutorials/recipes).
- If your organization requires you to keep data on-prem, you can use **[Enterprise Self-hosted Tracetest](https://tracetest.io/on-prem-installation) and deploy it in your own infrastructure**. It contains the same features as Cloud-based Managed Tracetest.

If your organization requires you to keep data on-prem, you can use Enterprise Self-hosted Tracetest and deploy it in your own infrastructure. It contains the same features as Cloud-based Managed Tracetest. [Request a license key for Enterprise Self-hosted Tracetest, here.](https://tracetest.io/on-prem-installation)
- **[Tracetest Core](https://github.com/kubeshop/tracetest) is the open-source hobbyist trace-based testing tool for non-production workloads**. It's a cloud-native application, packaged and distributed as a Docker image and designed to run in a containerized environment.

```mdx-code-block
<TracetestGettingStartedGuideCardsRow />
```
You can view [examples and many other supported use cases, here](/examples-tutorials/recipes).

## Features Available in Open-source Tracetest Core

### Features Available in Cloud-based Managed Tracetest and Enterprise Self-hosted Tracetest
- [Open-Source Features](https://github.com/kubeshop/tracetest?tab=readme-ov-file#-features)
- Test triggers: HTTP/GRPC, Trace ID, Kafka
- Test specifications: Selector language + Assertions
- Test automation options: CLI + Deep Link

## Features Available in Cloud-based Managed Tracetest and Enterprise Self-hosted Tracetest

#### All Tracetest Core features, plus...

Expand All @@ -51,20 +58,4 @@ If your organization requires you to keep data on-prem, you can use Enterprise S
- Secrets management: Obfuscate values in variable sets.
- Synthetic monitoring: Run your existing trace-based tests and test suites on a schedule and get alerted with your favorite alerting tools when they fail.
- Playwright engine trigger: Run your existing Playwright tests as part of the Tracetest platform and enhance them with trace-based testing.

## Hobby Self-hosted Open-source Tracetest Core

Tracetest Core is a cloud-native application, packaged and distributed as a Docker image and designed to run in a containerized environment.

```mdx-code-block
<TracetestCoreGettingStartedGuideCardsRow />
```

### Features Available in Open-source Tracetest Core

#### Tracetest Core functionality

- [Open-Source Features](https://github.com/kubeshop/tracetest?tab=readme-ov-file#-features)
- Test triggers: HTTP/GRPC, Trace ID, Kafka
- Test specifications: Selector language + Assertions
- Test automation options: CLI + Deep Link
- Trace mode: Ingest traces and automatically build trace-based tests from ingested traces.
62 changes: 44 additions & 18 deletions docs/src/components/GettingStartedGuide/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,48 +5,64 @@ import Link from '@docusaurus/Link';
import Translate from '@docusaurus/Translate';
import Heading from '@theme/Heading';

const TracetestGettingStartedGuides = [
const TracetestCoreGettingStartedGuides = [
{
name: 'Tracetest 🚀',
name: 'Option 3: I have a non-production environment and want to try trace-based testing',
url: '/core/getting-started/overview',
title: 'Hobby Self-hosted Tracetest Core (Open Source)',
description: (
<Translate>
Deploy a hobby instance in your own infrastructure with Docker or Kubernetes. Not suitable for production workloads.
</Translate>
),
},
];

const TracetestCloudGettingStartedGuides = [
{
name: 'Option 1: I want to create tests without managing infrastructure (Most Popular)',
url: '/getting-started/create-tracetest-account',
title: 'Cloud-based Managed Tracetest (Free to get started!)',
description: (
<Translate >
Set up Tracetest and start trace-based testing your distributed system.
<Translate>
Use managed infrastructure with collaboration for teams, and additional features on top of Hobby Tracetest Core.
</Translate>
),
button: 'Start',
},
];

const TracetestCoreGettingStartedGuides = [
const TracetestOnPremGettingStartedGuides = [
{
name: 'Tracetest Core 🪨 ',
url: '/core/getting-started/overview',
name: 'Option 2: I need something secure, controlled, in my own infrastructure',
url: 'https://tracetest.io/on-prem-installation',
title: 'Enterprise Self-hosted Tracetest (Free trial, no credit card required)',
description: (
<Translate>
Use the open-source Tracetest Core in your own infrastructure.
Same experience as with Cloud-based Managed Tracetest but self-hosted in your own infrastructure.
</Translate>
),
button: 'Go to Core',
},
];

interface Props {
name: string;
url: string;
button: string;
title: string;
description: JSX.Element;
}

function GettingStartedGuideCard({name, url, description, button}: Props) {
function GettingStartedGuideCard({name, url, title, description}: Props) {
return (
<div className="col col--6">
<div className="col col--12">
<div className="gs__card">
<div className="card">
<Link to={url}>
<div className="card__body">
<Heading as="h3">{name}</Heading>
<p>{description}</p>
<p>
<b>{title}:&nbsp;</b>
{description}
</p>
</div>
</Link>
</div>
Expand All @@ -55,20 +71,30 @@ function GettingStartedGuideCard({name, url, description, button}: Props) {
);
}

export function TracetestGettingStartedGuideCardsRow(): JSX.Element {
export function TracetestCoreGettingStartedGuideCardsRow(): JSX.Element {
return (
<div className="row">
{TracetestGettingStartedGuides.map((gettingStartedGuide) => (
{TracetestCoreGettingStartedGuides.map((gettingStartedGuide) => (
<GettingStartedGuideCard key={gettingStartedGuide.name} {...gettingStartedGuide} />
))}
</div>
);
}

export function TracetestCoreGettingStartedGuideCardsRow(): JSX.Element {
export function TracetestCloudGettingStartedGuidesRow(): JSX.Element {
return (
<div className="row">
{TracetestCoreGettingStartedGuides.map((gettingStartedGuide) => (
{TracetestCloudGettingStartedGuides.map((gettingStartedGuide) => (
<GettingStartedGuideCard key={gettingStartedGuide.name} {...gettingStartedGuide} />
))}
</div>
);
}

export function TracetestOnPremGettingStartedGuidesRow(): JSX.Element {
return (
<div className="row">
{TracetestOnPremGettingStartedGuides.map((gettingStartedGuide) => (
<GettingStartedGuideCard key={gettingStartedGuide.name} {...gettingStartedGuide} />
))}
</div>
Expand Down
11 changes: 1 addition & 10 deletions docs/src/components/WelcomeGuide/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,6 @@ import Link from '@docusaurus/Link';
import Heading from '@theme/Heading';

const WelcomeGuides = [
// { // Changed June 17 2024 to try redirecting users to recipes.
// name: '👇 Getting Started',
// url: './getting-started/overview',
// description: (
// <Translate >
// Set up Tracetest and start trace-based testing your distributed system.
// </Translate>
// ),
// },
{
name: '👉 Getting Started',
url: './getting-started/overview',
Expand Down Expand Up @@ -62,7 +53,7 @@ interface Props {
function WelcomeGuideCard({name, url, description}: Props) {
return (
<div className="col col--6 margin-bottom--lg">
<div className="gs__card">
<div className="w__card">
<div className="card">
<Link to={url}>
<div className="card__body">
Expand Down
Loading
Loading