populate_db: Mark onboarding steps as seen for existing users.

This commit updates populate_db to mark all onboarding steps as seen
for existing users to avoid unnecessary popups during development.

Developers should create a new user in development environment
to test the onboarding steps.
This commit is contained in:
Prakhar Pratyush
2024-10-23 12:59:43 +05:30
committed by Tim Abbott
parent 08ed639763
commit c70a3ffb0a
6 changed files with 25 additions and 12 deletions

View File

@@ -92,10 +92,6 @@ async function create_stream(page: Page): Promise<void> {
await page.click("#stream_creation_go_to_subscribers");
await page.type("#create_stream_name", "Test Stream 2");
await page.click("form#stream_creation_form .finalize_create_stream");
// an explanatory modal is shown for the first stream created
await common.wait_for_micromodal_to_open(page);
await page.click(".dialog_submit_button");
await common.wait_for_micromodal_to_close(page);
// We redirect to the channel message view.
await page.waitForSelector("#subscription_overlay", {hidden: true});

View File

@@ -3388,6 +3388,9 @@ class NormalActionsTest(BaseAction):
check_realm_deactivated("events[0]", events[0])
def test_do_mark_onboarding_step_as_read(self) -> None:
self.user_profile = do_create_user(
"user@zulip.com", "password", self.user_profile.realm, "user", acting_user=None
)
with self.verify_action() as events:
do_mark_onboarding_step_as_read(self.user_profile, "intro_inbox_view_modal")
check_onboarding_steps("events[0]", events[0])

View File

@@ -977,6 +977,7 @@ class RealmImportExportTest(ExportFile):
self.assertEqual(reaction.emoji_code, str(realm_emoji.id))
# data to test import of onboaring step
OnboardingStep.objects.filter(user=sample_user).delete()
OnboardingStep.objects.create(
user=sample_user,
onboarding_step="intro_inbox_view_modal",

View File

@@ -48,7 +48,7 @@ from zerver.lib.upload import sanitize_name, upload_message_attachment
from zerver.lib.upload.base import ZulipUploadBackend
from zerver.lib.upload.local import LocalUploadBackend
from zerver.lib.upload.s3 import S3UploadBackend
from zerver.models import Attachment, Message, Realm, RealmDomain, UserProfile
from zerver.models import Attachment, Message, OnboardingStep, Realm, RealmDomain, UserProfile
from zerver.models.realms import get_realm
from zerver.models.users import get_system_bot, get_user_by_delivery_email
@@ -1454,6 +1454,12 @@ class AvatarTest(UploadSerializeMixin, ZulipTestCase):
"user@zulip.com", "password", get_realm("zulip"), "user", acting_user=None
)
# 'visibility_policy_banner' is already marked as read for new users.
# Delete that row to avoid integrity error in copy_default_settings.
OnboardingStep.objects.filter(
user=target_user_profile, onboarding_step="visibility_policy_banner"
).delete()
copy_default_settings(source_user_profile, target_user_profile)
source_path_id = avatar_disk_path(source_user_profile)

View File

@@ -44,7 +44,7 @@ from zerver.lib.upload import (
)
from zerver.lib.upload.base import StreamingSourceWithSize
from zerver.lib.upload.s3 import S3UploadBackend
from zerver.models import Attachment, RealmEmoji, UserProfile
from zerver.models import Attachment, OnboardingStep, RealmEmoji, UserProfile
from zerver.models.realms import get_realm
from zerver.models.users import get_system_bot
@@ -361,6 +361,12 @@ class S3Test(ZulipTestCase):
"user@zulip.com", "password", get_realm("zulip"), "user", acting_user=None
)
# 'visibility_policy_banner' is already marked as read for new users.
# Delete that row to avoid integrity error in copy_default_settings.
OnboardingStep.objects.filter(
user=target_user_profile, onboarding_step="visibility_policy_banner"
).delete()
copy_default_settings(source_user_profile, target_user_profile)
source_path_id = user_avatar_path(source_user_profile)

View File

@@ -39,6 +39,7 @@ from zerver.lib.bulk_create import bulk_create_streams
from zerver.lib.generate_test_data import create_test_data, generate_topics
from zerver.lib.management import ZulipBaseCommand
from zerver.lib.onboarding import create_if_missing_realm_internal_bots
from zerver.lib.onboarding_steps import ALL_ONBOARDING_STEPS
from zerver.lib.push_notifications import logger as push_notifications_logger
from zerver.lib.remote_server import get_realms_info_for_push_bouncer
from zerver.lib.server_initialization import create_internal_realm, create_users
@@ -932,16 +933,16 @@ class Command(ZulipBaseCommand):
)
user_profiles_ids = []
onboarding_steps = []
onboarding_steps: list[OnboardingStep] = []
for user_profile in user_profiles:
user_profiles_ids.append(user_profile.id)
onboarding_steps.append(
OnboardingStep(
user=user_profile, onboarding_step="narrow_to_dm_with_welcome_bot_new_user"
)
onboarding_steps.extend(
OnboardingStep(user=user_profile, onboarding_step=onboarding_step.name)
for onboarding_step in ALL_ONBOARDING_STEPS
)
# Existing users shouldn't narrow to DM with welcome bot on first login.
# Mark onboarding steps as seen for existing users to avoid
# unnecessary popups during development.
OnboardingStep.objects.bulk_create(onboarding_steps)
# Create several initial direct message groups