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

🪟🎉 Remove the onboarding page #19539

Merged
merged 2 commits into from
Nov 17, 2022
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
Expand Up @@ -6,7 +6,7 @@ describe("Preferences actions", () => {
initialSetupCompleted(false);
});

it("Should redirect to onboarding after email is entered", () => {
it("Should redirect to connections page after email is entered", () => {
cy.visit("/preferences");
cy.url().should("include", `/preferences`);

Expand All @@ -15,6 +15,6 @@ describe("Preferences actions", () => {

submitButtonClick();

cy.url().should("match", /.*\/onboarding/);
cy.url().should("match", /.*\/connections/);
});
});
4 changes: 2 additions & 2 deletions airbyte-webapp-e2e-tests/cypress/integration/source.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ describe("Unsaved changes modal", () => {

openHomepage();

cy.url().should("include", "/onboarding");
cy.url().should("include", "/connections");
cy.get("[data-testid='confirmationModal']").should("not.exist");
});

Expand All @@ -57,7 +57,7 @@ describe("Unsaved changes modal", () => {

openHomepage();

cy.url().should("include", "/onboarding");
cy.url().should("include", "/connections");
cy.get("[data-testid='confirmationModal']").should("not.exist");
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ export enum PageTrackingCodes {
LOGIN = "Auth.Login",
RESET_PASSWORD = "Auth.ResetPassword",
VERIFY_EMAIL = "Auth.VerifyEmail",
ONBOARDING = "Onboarding",
SOURCE_NEW = "Source.New",
SOURCE_LIST = "Source.List",
SOURCE_ITEM = "Source.Item",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
*/

export interface Experiments {
"onboarding.hideOnboarding": boolean;
"connector.inviteUsersHint.visible": boolean;
"connector.inviteUsersHint.linkToUsersPage": boolean;
"connector.orderOverwrite": Record<string, number>;
Expand Down
41 changes: 0 additions & 41 deletions airbyte-webapp/src/hooks/services/Onboarding/OnboardingService.tsx

This file was deleted.

1 change: 0 additions & 1 deletion airbyte-webapp/src/hooks/services/Onboarding/index.tsx

This file was deleted.

17 changes: 0 additions & 17 deletions airbyte-webapp/src/hooks/services/useWorkspace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,6 @@ const useWorkspace = () => {

const analyticsService = useAnalyticsService();

const finishOnboarding = async (skipStep?: string) => {
analyticsService.track(Namespace.ONBOARDING, Action.SKIP, {
actionDescription: "Skip Onboarding",
step: skipStep,
});

await updateWorkspace({
workspaceId: workspace.workspaceId,
initialSetupComplete: workspace.initialSetupComplete,
anonymousDataCollection: !!workspace.anonymousDataCollection,
news: !!workspace.news,
securityUpdates: !!workspace.securityUpdates,
displaySetupWizard: false,
});
};

const setInitialSetupConfig = async (data: {
email: string;
anonymousDataCollection: boolean;
Expand Down Expand Up @@ -114,7 +98,6 @@ const useWorkspace = () => {
);

return {
finishOnboarding,
setInitialSetupConfig,
updatePreferences,
updateWebhook,
Expand Down
34 changes: 0 additions & 34 deletions airbyte-webapp/src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
"sidebar.connections": "Connections",
"sidebar.settings": "Settings",
"sidebar.update": "Update",
"sidebar.onboarding": "Onboarding",
"sidebar.resources": "Resources",
"sidebar.documentation": "Documentation",
"sidebar.joinSlack": "Join our Slack",
Expand Down Expand Up @@ -202,48 +201,15 @@
"preferences.unsubscribeAnyTime": " You can unsubscribe any time.",
"preferences.securityUpdates": "Receive emails about security updates.",

"onboarding.headTitle": "Get Started!",
"onboarding.title": "Let’s set up your first connection.",
"onboarding.subtitle": "Connections are automated data pipelines that sync data from a source to a destination.",
"onboarding.createSource": "Create a source",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ I did check all strings individually here, and the remaining strings are still used across the product (but we could change their IDs in a future PR if we want).

"onboarding.sourceSetUp": "Set up the source",
"onboarding.sourceSetUp.buttonText": "Set up source",
"onboarding.createDestination": "Create a destination",
"onboarding.destinationSetUp": "Set up the destination",
"onboarding.destinationSetUp.buttonText": "Set up destination",
"onboarding.setUpConnection": "Set up connection",
"onboarding.instructionsLink": "See full instructions how to connect {name}",
"onboarding.fetchingSchema": "We are fetching the schema of your data source. \nThis should take less than a minute, but may take a few minutes on slow internet connections or data sources with a large amount of tables.",
"onboarding.tutorial": "Check how you can sync PostgreSQL databases in minutes",
"onboarding.skipOnboarding": "Skip Onboarding",
"onboarding.welcome": "Welcome to Airbyte!",
"onboarding.welcomeUser": "Welcome to Airbyte, {name}!",
"onboarding.welcomeUser.text": "<b>Your path to syncing your data starts here.</b>Connections are automated data pipelines that replicate data from a source to a destination. ",
"onboarding.or": "or",
"onboarding.watchVideo": "Watch the 2-min demo video",
"onboarding.exploreDemo": "Explore our demo app with test data",
"onboarding.firstConnection": "Set up your first connection",
"onboarding.createFirstSource": "Create your <name>first source</name>",
"onboarding.createFirstSource.text": "Sources are connectors that pull data from a data source.",
"onboarding.createFirstDestination": "Create your <name>first destination</name>",
"onboarding.createFirstDestination.text": "Destinations are connectors that push data to a data store.",
"onboarding.createConnection": "Set up <name>the connection</name>",
"onboarding.createConnection.text": "Connections represent a sync between a source and a destination.",
"onboarding.synchronizationProgress": "{source}{destination} = <sync>Synchronization</sync> in progress",
"onboarding.useCases": "Enable <name>popular use cases</name>",
"onboarding.useCase.singleCustomerView": "Build a single customer view",
"onboarding.useCase.replicatePostgres": "Replicate your data between PostgreSQL databases",
"onboarding.useCase.syncMySQLKafka": "Sync MySQL CDC to Kafka using Change Data Capture",
"onboarding.useCase.mailchimpSnowflake": "Build a data ingestion pipeline from Mailchimp to Snowflake",
"onboarding.useCase.buildDashboard": "Build an activity dashboard for your engineering project",
"onboarding.skip": "Skip",
"onboarding.closeOnboarding": "Close onboarding",
"onboarding.syncCompleted": "Your first sync has been successfully completed!",
"onboarding.checkData": "Please check the data at the destination.\nDoes it fit with your expectations?",
"onboarding.skipFeedback": "Skip",
"onboarding.firstSync": "Start your first sync",
"onboarding.syncFailed": "Your sync is failed. Please try again",
"onboarding.startAgain": "Your sync was cancelled. You can start it again",

"sources.description": "<b>Sources</b> are where you want to <b>pull data</b> from.",
"sources.searchIncremental": "Search cursor value for incremental",
Expand Down
23 changes: 1 addition & 22 deletions airbyte-webapp/src/packages/cloud/cloudRoutes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,9 @@ import { ApiErrorBoundary } from "components/common/ApiErrorBoundary";
import LoadingPage from "components/LoadingPage";

import { useAnalyticsIdentifyUser, useAnalyticsRegisterValues } from "hooks/services/Analytics/useAnalyticsService";
import { useExperiment } from "hooks/services/Experiment";
import { FeatureItem, FeatureSet, useFeatureService } from "hooks/services/Feature";
import { useApiHealthPoll } from "hooks/services/Health";
import { OnboardingServiceProvider } from "hooks/services/Onboarding";
import { useQuery } from "hooks/useQuery";
import { useExperimentSpeedyConnection } from "packages/cloud/components/experiments/SpeedyConnection/hooks/useExperimentSpeedyConnection";
import { useAuthService } from "packages/cloud/services/auth/AuthService";
import { Auth } from "packages/cloud/views/auth";
import { CreditsPage } from "packages/cloud/views/credits";
Expand All @@ -24,7 +21,6 @@ import CreateDestinationPage from "pages/destination/CreateDestinationPage";
import { DestinationItemPage } from "pages/destination/DestinationItemPage";
import { DestinationOverviewPage } from "pages/destination/DestinationOverviewPage";
import { DestinationSettingsPage } from "pages/destination/DestinationSettingsPage";
import OnboardingPage from "pages/OnboardingPage";
import SourcesPage from "pages/SourcesPage";
import { useCurrentWorkspace, WorkspaceServiceProvider } from "services/workspaces/WorkspacesService";
import { setSegmentAnonymousId, useGetSegmentAnonymousId } from "utils/crossDomainUtils";
Expand Down Expand Up @@ -63,7 +59,6 @@ const MainRoutes: React.FC = () => {
const { setWorkspaceFeatures } = useFeatureService();
const workspace = useCurrentWorkspace();
const cloudWorkspace = useGetCloudWorkspace(workspace.workspaceId);
const hideOnboardingExperiment = useExperiment("onboarding.hideOnboarding", false);

useEffect(() => {
const outOfCredits =
Expand All @@ -86,11 +81,6 @@ const MainRoutes: React.FC = () => {
);
useAnalyticsRegisterValues(analyticsContext);

const mainNavigate =
workspace.displaySetupWizard && !hideOnboardingExperiment ? RoutePaths.Onboarding : RoutePaths.Connections;

// exp-speedy-connection
const { isExperimentVariant } = useExperimentSpeedyConnection();
return (
<ApiErrorBoundary>
<Routes>
Expand All @@ -107,18 +97,7 @@ const MainRoutes: React.FC = () => {
<Route path={`${RoutePaths.Connections}/*`} element={<ConnectionPage />} />
<Route path={`${RoutePaths.Settings}/*`} element={<CloudSettingsPage />} />
<Route path={CloudRoutes.Credits} element={<CreditsPage />} />

{(workspace.displaySetupWizard || isExperimentVariant) && !hideOnboardingExperiment && (
<Route
path={RoutePaths.Onboarding}
element={
<OnboardingServiceProvider>
<OnboardingPage />
</OnboardingServiceProvider>
}
/>
)}
<Route path="*" element={<Navigate to={mainNavigate} replace />} />
<Route path="*" element={<Navigate to={RoutePaths.Connections} replace />} />
</Routes>
</ApiErrorBoundary>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { Link } from "react-router-dom";
import { Text } from "components/ui/Text";

import { CountDownTimer } from "packages/cloud/components/experiments/SpeedyConnection/CountDownTimer";
import { StepType } from "pages/OnboardingPage/types";
import { RoutePaths } from "pages/routePaths";

import { useExperimentSpeedyConnection } from "../hooks/useExperimentSpeedyConnection";
Expand All @@ -22,13 +21,7 @@ export const SpeedyConnectionBanner = () => {
defaultMessage="<link>Set up your first connection</link> in the next <timer></timer> and get <b>100 additonal credits</b> for your trial"
values={{
link: (link: React.ReactNode[]) => (
<Link
className={styles.linkCta}
to={`${RoutePaths.Connections}/${RoutePaths.ConnectionNew}`}
state={{
step: StepType.CREATE_SOURCE,
}}
>
<Link className={styles.linkCta} to={`${RoutePaths.Connections}/${RoutePaths.ConnectionNew}`}>
<Text bold>{link}</Text>
</Link>
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import { DocsIcon } from "components/icons/DocsIcon";
import { DropdownMenu } from "components/ui/DropdownMenu";
import { Text } from "components/ui/Text";

import { useExperiment } from "hooks/services/Experiment";
import { FeatureItem, IfFeatureEnabled } from "hooks/services/Feature";
import { useCurrentWorkspace } from "hooks/services/useWorkspace";
import { CloudRoutes } from "packages/cloud/cloudRoutes";
Expand All @@ -25,7 +24,6 @@ import { ReactComponent as AirbyteLogo } from "views/layout/SideBar/airbyteLogo.
import ChatIcon from "views/layout/SideBar/components/ChatIcon";
import ConnectionsIcon from "views/layout/SideBar/components/ConnectionsIcon";
import DestinationIcon from "views/layout/SideBar/components/DestinationIcon";
import OnboardingIcon from "views/layout/SideBar/components/OnboardingIcon";
import SettingsIcon from "views/layout/SideBar/components/SettingsIcon";
import SourceIcon from "views/layout/SideBar/components/SourceIcon";
import StatusIcon from "views/layout/SideBar/components/StatusIcon";
Expand All @@ -41,18 +39,12 @@ const SideBar: React.FC = () => {
const cloudWorkspace = useGetCloudWorkspace(workspace.workspaceId);
const { show } = useIntercom();
const { formatMessage } = useIntl();
const hideOnboardingExperiment = useExperiment("onboarding.hideOnboarding", false);
const handleChatUs = () => show();

return (
<nav className={styles.nav}>
<div>
<Link
to={
workspace.displaySetupWizard && !hideOnboardingExperiment ? RoutePaths.Onboarding : RoutePaths.Connections
}
aria-label={formatMessage({ id: "sidebar.homepage" })}
>
<Link to={RoutePaths.Connections} aria-label={formatMessage({ id: "sidebar.homepage" })}>
<AirbyteLogo height={33} width={33} />
</Link>
<WorkspacePopout>
Expand All @@ -63,16 +55,6 @@ const SideBar: React.FC = () => {
)}
</WorkspacePopout>
<ul className={styles.menu}>
{workspace.displaySetupWizard && !hideOnboardingExperiment ? (
<li>
<NavLink className={navLinkClassName} to={RoutePaths.Onboarding}>
<OnboardingIcon />
<Text className={styles.text} size="sm">
<FormattedMessage id="sidebar.onboarding" />
</Text>
</NavLink>
</li>
) : null}
<li>
<NavLink className={navLinkClassName} to={RoutePaths.Connections}>
<ConnectionsIcon />
Expand Down
Loading