Skip to content
Draft
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
4 changes: 3 additions & 1 deletion experimenter/experimenter/experiments/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2735,7 +2735,9 @@ def audience_overlap_warnings(self):
"entries": entries,
"self_issues": self_issues,
"variant": "warning",
"learn_more_link": NimbusUIConstants.AUDIENCE_OVERLAP_WARNING,
"learn_more_link": (
NimbusUIConstants.AUDIENCE_OVERLAP_WARNING if entries else None
),
}
]

Expand Down
30 changes: 30 additions & 0 deletions experimenter/experimenter/experiments/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3269,6 +3269,9 @@ def test_audience_overlap_warnings_aggregates_collision_warnings(self):
warning = warnings[0]
self.assertIn("WARNING:", warning["text"])
self.assertEqual(warning["variant"], "warning")
self.assertEqual(
warning["learn_more_link"], NimbusUIConstants.AUDIENCE_OVERLAP_WARNING
)
entry_slugs = [e["slug"] for e in warning["entries"]]
self.assertEqual(
entry_slugs,
Expand Down Expand Up @@ -3307,12 +3310,39 @@ def test_audience_overlap_warnings_combines_collisions_and_self_issues(self):
self.assertEqual(len(warnings), 1)
warning = warnings[0]
self.assertEqual([e["slug"] for e in warning["entries"]], [live.slug])
self.assertEqual(
warning["learn_more_link"], NimbusUIConstants.AUDIENCE_OVERLAP_WARNING
)
labels = [issue["label"] for issue in warning["self_issues"]]
self.assertIn("Targeting multiple channels", labels)
self.assertIn(
"Issues that may affect enrollment for this experiment", warning["text"]
)

def test_audience_overlap_warnings_self_issues_only_omits_learn_more_link(self):
draft = NimbusExperimentFactory.create_with_lifecycle(
NimbusExperimentFactory.Lifecycles.CREATED,
slug="self-issues-only-draft",
is_rollout=False,
application=NimbusExperiment.Application.DESKTOP,
channel=NimbusExperiment.Channel.NO_CHANNEL,
channels=[NimbusExperiment.Channel.NIGHTLY, NimbusExperiment.Channel.RELEASE],
firefox_min_version=NimbusExperiment.Version.FIREFOX_120,
feature_configs=[
NimbusFeatureConfigFactory.create(
slug="self-issues-only-feature",
application=NimbusExperiment.Application.DESKTOP,
)
],
)

warnings = draft.audience_overlap_warnings
self.assertEqual(len(warnings), 1)
warning = warnings[0]
self.assertEqual(warning["entries"], [])
self.assertNotEqual(warning["self_issues"], [])
self.assertIsNone(warning["learn_more_link"])

def test_collision_warnings_no_min_version_treats_feature_as_contesting(self):
# Without firefox_min_version we can't resolve coenrollment schemas, so the
# feature is treated as contesting (collision still surfaces).
Expand Down
Loading