Граф коммитов

2613 Коммитов

Автор SHA1 Сообщение Дата
Andrei Oprea f6f7c1d813
fix(nimbus): Infrequent non-default windows users; increment build version (#6441) 2021-09-16 11:23:16 -07:00
Andrei Oprea c33ecf189e
fix(nimbus): Update infrequent windows users targeting to check for specific build number (#6440) 2021-09-16 15:43:36 +00:00
Les Orchard fd67409e2d
fix #6422 fix #6243 feat(nimbus): add NimbusBranchScreenshot model and configure file storage (#6425)
Because:

* we want to store screenshots associated with branches

This commit:

* adds a new NimbusBranchScreenshot model to store & manage screenshots
  associated with an experiment branch

* adds migration to add new NimbusBranchScreenshot model

* adds Pillow dependency required by Django ImageField in model

* adds UPLOADS_GS_CREDENTIALS and UPLOADS_GS_BUCKET_NAME env vars for
  Google Cloud credentials file path and bucket name for image storage

* uses FileSystemStorage defaulting to MEDIA_ROOT and MEDIA_URL if
  UPLOADS_GS_CREDENTIALS is not supplied, switches to GoogleCloudStorage
  if credentials are configured

* adds NimbusBranchAdmin with NimbusBranchScreenshotInlineAdmin to
  manage branch screenshots in Django admin
2021-09-14 13:31:54 -07:00
Andrei Oprea 6a6f60e864
feat(nimbus): add targeting for infrequent windows users (#6434) 2021-09-14 20:18:32 +00:00
Les Orchard 2b58d530ec
fix #6345 feat(nimbus): implement promoting a branch to rollout via cloning (#6403)
Because:

* we want to try an MVP of experiment rollouts via cloning an experiment
  with one branch

This commit:

* tweaks the experiment model clone method and tests to support rollout
  branch slug

* adds support for rollout_branch_slug to GQL clone mutation

* promotes CloneDialog to be a top-level shared component

* add support for rolloutBranchSlug parameter in cloning mutation

* adds "promote to rollout" buttons to branches that specify
  rolloutBranchSlug for CloneDialog

* integration test for promote to rollout
2021-09-13 14:30:15 -07:00
dependabot[bot] 410dea370b
chore(deps): bump prettier from 2.3.2 to 2.4.0 in /app (#6426) 2021-09-13 20:38:07 +00:00
dependabot[bot] 6050121823
chore(deps): bump @testing-library/dom from 8.2.0 to 8.5.0 in /app (#6427) 2021-09-13 20:38:06 +00:00
dependabot[bot] f6169a0bff
chore(deps): bump @babel/plugin-proposal-object-rest-spread in /app (#6429) 2021-09-13 20:38:04 +00:00
dependabot[bot] fb37fa30f3
chore(deps): bump sqlparse from 0.4.1 to 0.4.2 in /app (#6419) 2021-09-13 15:19:53 +00:00
Jared Lockhart a3dc3cbd98
fix #6394 bug(nimbus): set default branches on backend (#6401)
Because

* We recently found a bug where an experiment with 1 branch keeps inserting a second branch, even if it's not visible in the UI
* This will become extra critical when we start launching more rollouts since they only have a single branch
* We persistently had issues like this in legacy, where we'd try to populate empty defaults in the frontend, especially for branches, and the pattern we ended up landing on was removing all special cases from the frontend and letting the frontend treat everything passed from the backend verbatim and then passing empty default values back from the backend

This commit

* Removes the special "Treatment A" cases from the frontend
* Removes creating an empty control branch at creation time
* Passes an empty reference branch from the API if no reference branch exists
* Passes an empty treatment branch from the API if no branches exist (so we pass no empty treatment if only a reference branch does exist)
2021-09-13 11:18:44 -04:00
Jared Lockhart 6d1599d72d
fix #6393 bug(nimbus): remove duplicates from owners drop down (#6398)
Because

* Whenever you filter by a related entity in django you'll always get duplicates in the results set so you have to add a .distinct() to the end of it

This commit

* Adds the necessary distinct filter to the owners queryset
2021-09-09 16:54:05 -07:00
Jared Lockhart 29a2e1febe
fix #6329 feat(nimbus): validate targeting config jexl syntax (#6390)
Because

* We'd like to prevent targeting configs with invalid JEXL syntax from landing

This commit

* Uses the PyJEXL validator to validate the syntax of all targeting configs
* Adds an extra test to make sure new targeting configs are added to both constant classes
2021-09-08 18:37:17 -04:00
Jared Lockhart e17726b9b3
fix #6366 bug(nimbus): validate clone name length (#6389)
Because

* We neglected to validate that the clone name can't exceed 80 characters

This commit

* Validates clone name is <= 80 characters
* Noticed we were only validating experiment length on the client side, not the server side, so added it in the serializer too
2021-09-08 12:50:24 -07:00
Jared Lockhart 5a8f4c6137
fix #6363 feat(nimbus): clone integration test (#6388)
Because

* An integration test is helpful to ensure the backend and frontend stay in sync

This commit

* Adds an integration test for cloning
2021-09-08 12:48:52 -07:00
Jared Lockhart 01b2086fb6
fix #6381 feat(nimbus): sort directory view options (#6387)
Because

* Its easier to reason about options in a drop down when they're sorted

This commit

* Sorts the options in all the directory view filter drop downs
* Default sorts the experiment list by latest change before applying column specific sorting
2021-09-08 13:24:59 -05:00
Jared Lockhart ebbf989f53
chore(nimbus): rename config api fields (#6383)
Because

* Some of the config API fields were inconsistently singular or plural
* Some fields names didn't reflect the type of data they contained

This commit

* Renames fields that return a collection to pluralized
* Renames fields to match the type of data they return
2021-09-07 16:13:08 -07:00
Jared Lockhart 9b84f4b66a
chore(nimbus): reduce margin in sidebar (#6382)
Because

* We accidentally added a bit too much margin in the sidebar

This commit

* Brings it back down
2021-09-07 16:10:15 -07:00
Marina Samuel 8bb0cb51ec
Fix #6361: fix(visualization) Skip over outcome metrics with no data. (#6377)
Because:
* Results pages were failing to load if a metric was listed as an outcome metric but it had no data

This commit:
* Will gracefully ignore outcome metrics that don't have data.
2021-09-07 13:52:53 -04:00
anthonytran7757 952ef127e2
fixes #5888 feat(nimbus): added links to the sidebar for experimenter… (#6356)
* fixes #5888 feat(nimbus): added links to the sidebar for experimenter.info and slack

Because
* links to experimenter.info and #ask-experimenter are helpful

This commit
* adds links to experimenter.info and #ask-experimenter to the sidebar

* moved links to SidebarActions, moved URLS to constants, added feedback and removed text weight

* added feedback icon

* add more spacing around links

Co-authored-by: Jared Lockhart <119884+jaredlockhart@users.noreply.github.com>
2021-09-07 12:57:19 -04:00
dependabot[bot] 60aa5e34b4
chore(deps): bump @sentry/browser from 6.11.0 to 6.12.0 in /app (#6372) 2021-09-07 15:21:23 +00:00
dependabot[bot] 31d602fd54
chore(deps): bump pytest-testmon from 1.1.1 to 1.2.0 in /app (#6368) 2021-09-07 15:20:49 +00:00
dependabot[bot] 7344ab05ee
chore(deps): bump more-itertools from 8.8.0 to 8.9.0 in /app/tests (#6367) 2021-09-07 15:14:17 +00:00
dependabot[bot] 26febc7ea2
chore(deps): bump webpack from 5.51.1 to 5.52.0 in /app (#6369) 2021-09-07 15:14:16 +00:00
dependabot[bot] 495604f25e
chore(deps): bump @babel/plugin-proposal-decorators in /app (#6371) 2021-09-07 15:14:14 +00:00
dependabot[bot] 7dec324369
chore(deps-dev): bump @typescript-eslint/eslint-plugin in /app (#6373) 2021-09-07 15:14:13 +00:00
Les Orchard e395f6f04c
fix #6338 fix(nimbus): use experiment duration as enrollment duration if experiment ends before pause (#6365)
Because:

* experiments can be ended before enrollment is paused

This commit:

* switches to experiment duration rather than proposed duration if
  enrollment wasn't explicitly ended
2021-09-03 14:00:07 -07:00
Jared Lockhart 1877c650e6
chore(nimbus): use page.open in integration tests (#6344)
Because

* The integration test PyPom library provides a handy .open method that opens the page and waits for it to load
* This can clean up a lot of code in the tests

This commit

* Uses .open in all the integration tests
2021-09-03 16:38:16 -04:00
Les Orchard 0fa612144d
fix #6303 fix(nimbus): do not flash archive tooltip during mutation query request (#6353)
Because:

* the archive button is disabled during loading, but this is not the
  same as the archive action being disabled altogether

This commit:

* separates archive disabled state from archive query loading state,
  only showing the explanatory tooltip during the former state
2021-09-03 10:54:50 -07:00
Les Orchard 43f68f8507
fix #6337 fix(nimbus): Cloning an archived experiment should not archive the clone (#6352)
Because:

* clone experiments are intended to be fresh drafts

This commit:

* ensures that cloned experiments are properly set to not be archived
2021-09-03 10:54:43 -07:00
Les Orchard 0ba844c833
fix #6243 fix(nimbus): do not display invalid pages alert for an archived experiment (#6354)
Because:

* archived experiments cannot be changed

This commit:

* prevents the display of the alert listing pages with missing details
  for an archived experiment
2021-09-03 10:54:15 -07:00
Les Orchard 2de59e3046
fix #6343 fix(nimbus): include documentation links in cloning (#6355)
Because:

* documentation links should be copied during cloning

This commit:

* ensures that the links are copied
2021-09-03 09:46:19 -07:00
Les Orchard 18b6f4d7e9
fix #6314 fix(nimbus): do not restore previous search parameters when navigation resets them to empty (#6349)
Because:

* resetting sort order on the index page clears query parameters

This commit:

* applies a bugfix to correctly handle reset query parameters, rather
  than restoring the previous non-empty stored value
2021-09-02 14:40:18 -07:00
Lauren Zugai 4315def2b2
fix #6071 feat(nimbus): Enable relative/absolute tab for tables + Highlights, cosmetic tweaks (#6313)
Because:
* Users would like to toggle between relative and absolute branch comparison values - functionality was previously implemented for two tables deemed most important, this change allows the toggle to switch in sets of tabs containing these tables plus, now, the highlights table

This commit:
* Enables the highlights table to toggle between absolute/relative comparison
* Removes the branch comparison button, uses Bootstrap's Tabs component instead for applicable tables since the toggle is not useful for the metric tables
* Contains cosmetic tweaks, including spacing updates, updating heading levels and adding a metrics heading, combining monitoring/analysis sections, and aligning tooltips horizontally
2021-09-02 12:42:31 -05:00
Jared Lockhart 6e87eb9cd6
chore(nimbus): move integration test logic to base classes (#6341)
Because

* Now that we have nice clear base classes for the integration tests
* We don't need to override some shared logic in the child page classes

This commit

* Moves all the shared page logic to the respective base classes
2021-09-02 12:51:32 -04:00
Les Orchard 54c79455cb
fix #5796 feat(nimbus): Update experiment header to link back to parent experiment (#6340)
Because:

* we want to place cloned experiments in context with the original

This commit:

* adds a line to HeaderExperiment component identifying the experiment as a
  clone with a link back to the original parent

* updates GQL query and API to expose full parent experiment data, mainly for
  slug & name needed for the link

* updates types & tests as necessary
2021-09-01 16:57:51 -07:00
Jared Lockhart c615c62ebf
fix #6295 bug(nimbus): Fix intermittency in remote settings integration tests (#6339)
Because

* We've seen persistent intermittent failures in the remote settings integration tests
* It turns out the remote settings pages can render in stages so it's not sufficient to just wait for the page wait locator for all the UI elements to be available
* Also we were using the old remote settings review page instead of the new simple one that Experimenter links to

This commit

* Adds a wait locator to every UI element in the Remote Settings pages so interactions shouldn't occur until the element is visible
* Adds helpful messages to each of the waits so if one fails the test should clearly say what it was waiting for and couldn't find
* Use the new simple-review page in Remote Settings instead of the old review page
2021-09-01 18:04:08 -05:00
Jared Lockhart f0c303a7ca
fix #6305 chore(nimbus): add archiving integration test (#6333)
Because

* We should add a simple integration test for each new major feature we add

This commit

* Adds an integration test for archiving
* Splits the integration tests into two groups
  * Tests that run for each application (for remote settings integration)
  * Tests that only run once (for things constrained just to experimenter UI)
* Adds a random identifier to the end of integration test experiments to allow rerunning tests locally
* Cleans up the page load wait locators
2021-09-01 10:47:22 -07:00
Les Orchard 0e5ea47b84
fix #6312 feat(nimbus): Connect Clone modal to mutation (#6336)
Because:

* we want to enable cloning of experiments

This commit:

* adds the clone experiment GQL mutation in front end

* creates a useCloneDialog hook with CloneDialog display and mutation
  logic that can be partially controlled and watched from SidebarActions

* adds display of general submit errors to CloneDialog

* updates types & tests as necessary
2021-09-01 10:18:26 -07:00
Jared Lockhart 19298d682f
fix #5791 feat(nimbus): add clone api (#6307)
Because

* We want to trigger cloning from the UI

This commit

* Exposes the cloning method through a V5 API
2021-08-31 14:13:10 -04:00
Jared Lockhart 20fe3d3f11
fix #6311 bug(nimbus): make test change datetimes deterministic (#6330)
Because

* We've had this issue for a little while where creating multiple changelogs in tests with timezone.now() can result in multiple changes having the same change datetime
* Several bits of logic depend on using the 'latest' change to understand the state of the experiment
* Multiple changes with the same change datetime can randomly invert the expected ordering and intermittently fail tests

This commit

* Changes the NimbusExperimentFactory to always use the same starting date and then create each change 1 day later
* For tests that are sensitive to timeouts, provide the ability to set the latest change to the current time
* For tests that require more detailed change date logic, explicitly set those dates in the test
* This should hopefully prevent this kind of intermittency from happening in the future
2021-08-31 11:04:50 -07:00
Jared Lockhart 1065fe39f8
chore(project): re-enable circle docker layer caching (#6334)
Because

* We previously used circle docker layer caching to speed up circle runs
* While migrating to the shared build cache, some confusing errors appeared
* We disabled it to see if that cleared up the issue
* Circle builds have been stable lately using the shared layer cache, but each circle run takes a significant amount of time to pull in remote images
* It's worth trying to re enable it to see if we can get both the circle caching and shared layer cache working together properly

This commit

* Re enables circle docker layer caching
2021-08-31 13:33:58 -04:00
dependabot[bot] e4500adcf3
chore(deps): bump importlib-metadata from 4.6.1 to 4.8.1 in /app (#6324) 2021-08-30 17:48:07 +00:00
dependabot[bot] 9d77514c6f
chore(deps-dev): bump eslint-plugin-react from 7.24.0 to 7.25.1 in /app (#6327) 2021-08-30 17:48:05 +00:00
dependabot[bot] 0ea5896f46
chore(deps): bump black from 21.6b0 to 21.8b0 in /app (#6323) 2021-08-30 17:45:16 +00:00
dependabot[bot] 59716f9e55
chore(deps): bump @testing-library/dom from 8.1.0 to 8.2.0 in /app (#6325) 2021-08-30 17:45:14 +00:00
dependabot[bot] 726d568306
chore(deps-dev): bump @typescript-eslint/eslint-plugin in /app (#6328) 2021-08-30 17:45:11 +00:00
Benjamin Forehand Jr 251dbb36e9
fix #6310 Approve button not shown error during e2e tests. (#6316)
* fix #6310 Approve button not shown error during e2e tests.
2021-08-26 12:53:07 -04:00
Lauren Zugai 846a64f9c4
fix #6200 feat(nimbus): Display all analysis external config overrides on Results page (#6302)
Because:
* Experiment analysis can be ran with overrides on the Jetstream side. As of Jetstream metadata schema 4, these overrides are exposed and we want to convey them to users to eliminate confusion. The reference/control branch was taken care of in a prior commit - this covers the rest of the overrides.

This commit:
* Displays start date, end date, and enrollment period overrides in ExternalConfigAlert
* Displays 'analysis was skipped' text in the sidebar if 'skip' is set to true, slightly alters analysis ready text
* Refactors AppLayoutSidebarLaunched stories to new syntax, refactors PageResults stories to new syntax and adds story to better preview the page when the control branch is overridden
2021-08-25 18:37:53 -05:00
Benjamin Forehand Jr 463b8f3035
Fix #6309 - Initial attempt at adding parametrization to e2e tests. (#6273)
* Initial attempt at adding parametrization to e2e tests.
2021-08-25 14:57:51 -07:00
Jared Lockhart 0f3660d91f
fix #5787 feat(nimbus): add experiment clone method (#6306)
Because

* We want to be able to clone a nimbus experiment

This commit

* Adds a clone method to NimbusExperiment
2021-08-25 15:43:42 -05:00