fixes FOO-1409
flag = none
no more client_apps, canvas_quizzes now lives as part of canvas-lms
proper inside app/jsx/, which makes the build leaner and leaves us with
one less thing to reason about
logical changes:
- converted from AMD to ES modules
- upgraded to recent react + react-router
- dropped RSVP in favor of native Promises
- used CanvasModal instead of home-grown Dialog
- removed dead code; notifications in particular were fishy as there had
no dependents at all and did not even show up in the graph
- ported tests to Jest, added more unit ones and two integration ones
- removed "config.onError" and now throws errors where appropriate
- disabled console statements in non-dev
:: test plan ::
- create a (old-school) quiz containing all types of questions
- as 3 distinct students, take the quiz and try to randomize your
answers
at this point it's helpful to have a reference to compare the screens; I
replicated the quiz on my production sandbox for this
- go to /courses/:id/quizzes/:id/submissions/:id/log
- verify it looks OK
- click on a specific question in the stream and verify the question
inspector widget works OK
- go back to stream and push "View table"
- verify the table and its controls are OK
- go to /courses/:id/quizzes/:id/statistics
- verify it looks OK
- click on ? in the discrimination index chart and verify it displays
a dialog with help content
- click on "X respondents" in one of the charts and verify it displays
a dialog with the respondent names
- verify the interactive charts do interact as expected (no logic
changed here so just a quick glance)
- link to "View in SpeedGrader" for essay-like questions works
Change-Id: I79af5ff4f1479503b5e2528b613255dde5bc45d3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256118
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
fixes FOO-1435
flag = none
instead of the bundler inferring the source file that an extension is
meant for based on filepath, a plugin is now expected to explicitly map
each source file to the extension file in its package.json manifest
{
"canvas": {
"source-file-extensions": {
"path/to/a.js": "path/to/extension-to-a.js"
}
}
}
this allows extensions to continue working even when the path of the
source file no longer matches that of the extension inside the plugin
== test plan
- visit a page that contains an extended module and verify the extension
is still applied
Change-Id: Ida7d75b87aedc519502c969e6912a335af69abc0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256222
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
refs FOO-1116
flag = none
this pulls in a version of the package that can work under node > 10,
see https://github.com/instructure/i18nliner-handlebars/pull/2
:: test plan
you need to try this in both node 10 and node 12, run webpack when you
switch versions
create a module in a course that has some students and add some stuff
to it, then view its progress and verify the student names show up
fine
Change-Id: I5f5b110b64cc6ffab3dc190785c641c0b3bc5b4a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/253070
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
fixes FOO-519
flag = none
\__/
(xx)
//||\\
test
plan
- rebuild assets & run rails and webpack with RAILS_LOAD_ALL_LOCALES=1
- switch your language to Catalan / CA
- verify it looks OK generally
- go to new assignment and verify the date picker works OK: try
selecting specific days, hours/minutes, and typing[1]
- again in new assignment, verify we're formatting the numbers as
expected (XXX.YYY,ZZ) by punching a large number into "Points"
- go to calendar and verify the month names look OK
- go to the RCE somewhere and verify everything is localized
- find places where it appears to be broken...
Change-Id: Iad5e9a40a8b099b0cb5ae687e96b0cf0ddc2a1b7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/243131
Reviewed-by: August Thornton <august@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
refs DE-161
Test Plan:
1. Ensure that JS sourcemaps are skipped on pre-merge
1. Ensure that JS sourcemaps are run on post-merge
3. Ensure that Linters catch bundle size increase limits on pre-merge
Change-Id: I59607d902b191169a0415fc7673cb3a3a06dba68
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/243619
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
QA-Review: Alex Slaughter <aslaughter@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
Reviewed-by: Alex Slaughter <aslaughter@instructure.com>
increase the maxAssetSize until LS-1222 is complete so Jenkins
builds can continue to work.
flag = none
Change-Id: Ie110245d6149d0439759da3011fbd8b7c2cf909a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/242917
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: James Butters <jbutters@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
closes LA-729
flag=rce_enhancements
The original intent for the audio player was to size it so the buttons
just fit. This ignored the fact that it's rendered w/in an iframe,
so popup menus are clipped. This change sizes the player to leave
room for those popups.
While the ticket was written against the audio player, the same issues
may occur in the video player, either for portrait videos or videos < 400px
wide when closed captions are present. The original code for
sizing the video player shrank the width to fit
thea video's size, which clipped the buttons. This change sets a minimum
width for the player and letter-boxes the video.
test plan:
- in the new rce
- add an audio file
> expect it to be wide enough to show all the buttons and
tall enough for the speed and volume popups
- add a vertical video
> expect the video sized to fit in the available space in the Computer
tab of the Upload Media modal
- Submit to upload
> expect the player to be wide enough to show all the buttons
- click the fullscreen button
> expect the video to be the height of the screen and letterboxed
- restore to windowed size
> expect the video to return to its letterboxed size
- click the video, then the Options button
- change the video's size
> expect the video to remain letterboxed
- add a horizontal video
> expect the video sized to fit in the available space in the Computer
tab of the Upload Media modal
- submit to upload
> expect the player to be sized to the size of the video
- fullscreen
> expect the video to be letterboxed in the fullscreen player
(if the aspect ration of the video !== that of your monitor,
or fill the screen if they match)
- for the horizontal video, select Opitons and
change the size to be "medium" or "custom" and < 400px wide
and add subtitles
> expect the video to be letterboxed in a 400px wide iframe.
Change-Id: Ib5d08dbd7796985d00f656e38a642ab92939d614
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/238432
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Alex Anderson <raanderson@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
Now that Gradebook is smaller, we should keep it that way.
This commit is marked as 'spec' because this check is
effectively a build-failing check for bundle sizes.
Change-Id: I0b3d429d9e7ece78d799cefe862a5d7f1bfb0d08
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230765
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Jeremy Neander <jneander@instructure.com>
Product-Review: Jeremy Neander <jneander@instructure.com>
closes TALLY-756
flag = none
QA Notes:
* Learning Mastery is Outcomes stuff
* Gradebook is the Assignments stuff
test plan:
A. Setup
1. Create a course
2. Enable the outcome_gradebook feature flag
3. Create content for Outcomes
4. Create content for Gradebook (i.e. assignments)
B. UI Verification
1. Visit Gradebook
2. Verify the "Assignments view" is displayed
3. Select Learning Mastery from the Gradebook Selector
4. Verify Learning Mastery loads
5. Refresh the page
6. Verify Learning Mastery loads
7. Select Gradebook from the Gradebook Selector
8. Verify Gradebook loads
9. Refresh the page
10. Verify Gradebook loads
C. Verification
1. Visit Gradebook
2. Ensure Gradebook is the current view
3. Visit `/gradebook?view=learning_mastery`
4. Verify Learning Mastery loads
5. Verify `?view=learning_mastery` is not in the url
6. Refresh the page
7. Verify Learning Mastery loads
8. Visit `/gradebook?view=gradebook`
9. Verify Gradebook loads
10. Verify `?view=gradebook` is not in the url
11. Refresh the page
12. Verify Gradebook loads
D. Smoke test Learning Mastery
Change-Id: I1fa79a7e4e53f3ffb54f325658a6f5c0962782f0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230296
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Frank Murphy <fmurphy@instructure.com>
Reviewed-by: Keith Garner <kgarner@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Jonathan Fenton <jfenton@instructure.com>
flag = none
Test plan:
on portal2 or with prod assets:
- create quiz
- on quiz show page, open "show rubric" option
- verify that dialog loads properly
- create rubric with outcomes
- reload page
- verify that dialog loads properly when
rubric exists
Change-Id: Ic132750654fe35b6bd55dfdb7722665638afc949
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/226828
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
QA-Review: Brian Watson <bwatson@instructure.com>
Product-Review: Michael Brewer-Davis <mbd@instructure.com>
closes LA-427
flag=none
Note: There are no tests and no flag because this is just a refactoring.
All the behavior should remain the same with perhaps minor styling
changes.
- Fixes the meaning of the padding parameter on CanvasTray so it is
again an InstUI style padding.
- Allow content of CanvasTray to have no padding to support LTI iframes.
- The content of CanvasTray now takes up the full space of the tray.
This supports having a full-size LTI iframe there.
- Make the RCE LTI tools use CanvasModal and CanvasTray for code reuse
and to make the look and feel consistent.
- Fix padding issues on CourseAndModulePicker
test plan:
- Configure an LTI tool that adds a button to the RCE that launches an
LTI modal (such as YouTube)
- Configure another LTI tool that adds a button to the RCE that launches
an LTI Tray (such as Commons, or the lti-test-provider)
- In the RCE, open both kinds of tools. The behavior should not have
changed. The styling may have changed slightly.
- Check other places where CanvasTray and CanvasModal are used and make
sure they still work, such as the Direct Share trays and modals.
- Specifically, the import tray on the Shared Content page should still
work.
- When the window is short, the content of these trays scrolls as
before.
- Check in multiple browsers.
Change-Id: I821bf66a29274f53962fffd038cd23a1698359ed
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/225255
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
Many folks—UX/UI Designers, Product Designers, Project Managers, QA
Engineers, Software Engineers—worked diligently over the span of nearly
four years to bring New Gradebook to the world. It was an effort beyond
the abilities of a few. It needed a team.
The committer would like to recognize the following folks who
contributed directly to the success of New Gradebook. Each person here
brought something unique and invaluable to the endeavor.
Christi Wruck
Danaan Clarke
Davis Phillips
Jon Fenton
Kendall Chadwick
Kyle Dubya Follett
Matt Goodwin
Pert Eilers
Sidharth Oberoi
Co-authored-by: Adrian Packel <apackel@instructure.com>
Co-authored-by: Amber Taniuchi <amber@instructure.com>
Co-authored-by: Anju Reddy <areddy@instructure.com>
Co-authored-by: Brian Park <brian@siimpl.io>
Co-authored-by: Cameron Matheson <cameron@instructure.com>
Co-authored-by: Derek Bender <djbender@instructure.com>
Co-authored-by: Gary Mei <gmei@instructure.com>
Co-authored-by: Indira Pai <ipai@instructure.com>
Co-authored-by: James Butters <jbutters@instructure.com>
Co-authored-by: KC Naegle <knaegle@instructure.com>
Co-authored-by: Keith Garner <kgarner@instructure.com>
Co-authored-by: Matt Taylor <mtaylor@instructure.com>
Co-authored-by: Neil Gupta <ngupta@instructure.com>
Co-authored-by: Nick Pitrak <npitrak@instructure.com>
Co-authored-by: Robin Kuss <rkuss@instructure.com>
Co-authored-by: Ryan Kuang <rkuang@instructure.com>
Co-authored-by: Shahbaz Javeed <sjaveed@instructure.com>
Co-authored-by: Sheldon Leibole <sheldon@siimpl.io>
Co-authored-by: Spencer Olson <solson@instructure.com>
Sincere appreciation to you all.
We will continue to find remnants of Old Gradebook, and clear those out
when we do. But this is the bulk of it.
closes TALLY-516
test plan:
* Smoke test New Gradebook
* Verify that the world is ready for this
* Maybe get some sleep
Change-Id: I247b8cf93cd75ab7968e3ece615695cd00017ff0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/225211
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Keith Garner <kgarner@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
QA-Review: Jeremy Neander <jneander@instructure.com>
Product-Review: Keith Garner <kgarner@instructure.com>
By creating a separate translation file for FinalGradeOverrideApi.js
srgb no longer needs to load the giant translation file from gradezilla.
This removes the srgb js bundle from "thingsWeKnowAreWayTooBig" \o/
Change-Id: I2c4d3b2be2b1b00eb1830000aa6d66c79c28e35e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/220663
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
Product-Review: Keith Garner <kgarner@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
closes: COREFE-385
Most pages use this and keeping it as its own chunk was causes webpack
to split out a lot of things (like @instructure/ui-view) into their
own chunks where it would be really more efficient to load them in
the main bundle once
By lazy-loading the actual tray contents, we don’t add that much
size to the main js bundle
and by only doing require.include(…) we don’t actually execute this
on pages that Don’t `js_bundle :navigation_header` like the login screen
Also by only running the jsx for stuff inside the tray if the tray
is open we can speed up the render functions
Test plan:
* the global nav should work the same as before
* simulate a “slow 3g connection”,
* click the “account”, “profile”, “help”, “courses” global nav buttons:
* you should see a spinner as each
of the global nav trays open while it is loading the JS for that tray
Change-Id: I0640668a61ba7c21669f2e43daf4873d5b0ac1b0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/214719
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Test plan:
* run webpack in prod mode
* you should not see the string “Could not append locator attribute”
Anywhere in the public/dist/webpack-production folder
* the main webpack bundle should be smaller
Change-Id: Id5bf89d09d5e8c49c01da24780d792834143e534
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/214121
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
part 1: avoid a “recalculate styles” in modules index
this gets rid of this “recalculate styles” from this profile:
https://cl.ly/0ec18e375e64
Test plan:
* go to the modules index page for a course
* on a module item, click the hamburger menu and select the “Duplicate”
option.
* it should work
* you shouldn’t be able to see that for quiz module items
part 2:
remove code that was used for the goSlow branch of code, nothing used it
test plan:
* expand and collapse a module
* it should work exactly the same as it did before
Change-Id: Icace0a7907c8e0c1d8b54338ac82ab9fb9895e1c
Reviewed-on: https://gerrit.instructure.com/211387
Tested-by: Jenkins
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
closes: COREFE-209 COREFE-207 COREFE-230
this should help bugs, spec flakiness, and bundle sizes
test plan:
* make sure that the pages that are still using the old 5.x one from
@instructure/ui-core still work, namely:
app/jsx/account_course_user_search/components/CoursesToolbar.js
app/jsx/blueprint_courses/components/CourseFilter.js
app/jsx/grade_summary/SelectMenu.js
* make sure themeing of instUI components still works and picks up
theme editor settings
* make sure bundle sizes are smaller, not bigger
* check tinymce-a11y-checker that it still works the same
(With the rce-enhancements feature both on and off)
Perf test plan:
* make sure tree shaking is working
load it up in one of the webpack bundle visualizers to see
* make sure we are not loading *all* of the icons
this commit also updates the instUI6 version we use from 6.9 6o 6.10
which has fix for <Alert> unmounting that ed fixed:
Test plan:
* you should see less console arrows about react unmounting nodes
Associated with the CanvasSelect component
Change-Id: Ied2ff1d1521b0900126136170f103dea27bc554a
Reviewed-on: https://gerrit.instructure.com/204545
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
We made this change in @instructure/ui-themeable in g/203714
but that is for the current master on instUI 6, we need it now even
though we are still on instUI 5 so this will back port it in so we can
use it now.
Test plan:
* Things that use `themeable` should work both with and without the
“Drop ie11” commit applied.
Specifically:
bin/rspec ./spec/selenium/dashboard/planner/student_planner_assignments_spec.rb:88
Should not fail with
TypeError: Class constructor Yr cannot be invoked without 'new'
Change-Id: I7ef8ef9eda1057badabbb08fcdd6875ad8064e89
Reviewed-on: https://gerrit.instructure.com/203950
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
these files are not actually bundles that someone would js_bundle onto
a page like anything else in the app/coffeescripts/bundles dir
If we left them here webpack would make chunks for them and that is a
waste. moving them out of that dir solves the problem
test plan:
* the content migration and account quota settings selenium specs should
still pass
Change-Id: Ieca3904f6254548d597087209ca180bf599181bd
Reviewed-on: https://gerrit.instructure.com/193848
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
This also replaces our old react-tinymce package with the official
@tinymce/tinymce-react package.
closes CORE-2836
test plan:
- typing in the rce should update the word count in the status bar
- the html path of the current cursor position should also be shown in
the status bar
- generally test all the rce things because of the package replacement
Change-Id: Ibe2b182ff55ba2dc77988dcd4c1865a28667db95
Reviewed-on: https://gerrit.instructure.com/193154
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Jenkins
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
Closes: CORE-1143
Test plan:
* load canvas in prod mode in a non-English language. Click around
And make sure everything works
* in prod mode, do a test to compare load time to what’s on beta.
* page load time and js bundle size should be smaller
* click around in the quizzes client apps and the ember grade book
And make sure those things work
Change-Id: I93c28c4a6d22db95cd1c7e59cd3f5221d46fe1ed
Reviewed-on: https://gerrit.instructure.com/143422
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Closes: CORE-2868 CORE-2869
This is needed because without
Doing that, our bundle sizes are going to blow up from the things we
Import from InstUI
Test plan:
* the result of a dynamic export will now give you a object grab bag
That has a “default” property. Not just the thing of whatever the
“default" export was.
* so to test this, go to some page that does a dynamic import (like
the dashboard page) and make sure that still works\
* run a prod build
* make sure that translations still work as before
Change-Id: I3dd1b32216052afd5fbc5d6cec40ea18264f65e9
Reviewed-on: https://gerrit.instructure.com/191578
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
This makes it so you can drop-in replace .coffee files in plugins
With .js files, without having to move them from app/coffeescripts/
To app/jsx
Test plan:
* with this applied, my commit that decaffeinates migration_tool
should pass
Change-Id: I06800406f497ec54a5f0294050fabf87755022fe
Reviewed-on: https://gerrit.instructure.com/191742
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
closes CORE-2874
This makes it so we use es Modules instead of AMD for the generated
Code we make in our webpack loader so that it works if those extensions
Are AMD OR ES Modules. As it is written before this, if any plugin
Was written as an es module it would not work unless the
Babel add-module-exports plugin was also used.
We have to do this before I can merge my other commits that
AMD->ES modules stuff in plugin repos
Test plan:
* plugins that add extensions to other files should still work
Change-Id: I2b6d6ee7fcabc28864b29e7f8df336316d1a3b61
Reviewed-on: https://gerrit.instructure.com/191710
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
closes: CORE-2785
This is all stuff that needs to be ran on every page, but It is not
critical that it be ran before anything else. By moving this into
an async chunk, it will not block any of the critical javascript from
running if it is ready (downloaded) before this stuff is.
Test plan:
* all of these behaviors and things should still run
* but you should see that they load from their own webpack chunk file
In the network panel
* and you should see that while that chunk is downloading, the critical
JS is not blocked from executing
Change-Id: If47d966979238d68da14bb4b69cba32be7f87dcc
Reviewed-on: https://gerrit.instructure.com/189372
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
closes: CORE-2770
we don’t need timezone data from before canvas was created (pre 2011)
or, realistically, 15 years from now. by using this
moment-timezone-data-webpack-plugin we can strip them out of our webpack
bundle and our common vendor JS file will be smaller.
and smaller js bundles = faster page loads
test plan:
* try to think of a compelling reason why we would need to properly
handle timezone weirdness that is either older than 2011 or more than
15 years from now
* if you can think of something, then we can’t do this
* run the prod webpack build, the vendor file should be smaller
Change-Id: I1823fb48cc14bc0687f5222d7f4344118825698e
Reviewed-on: https://gerrit.instructure.com/188810
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
closes: CORE-2588 CORE-2591
This completely removes the legacy RCE codepath. So you will need to
Have an https://github.com/instructure/canvas-rce-api running to use
sidebar in any Rich Content Editors.
Test plan:
* smoke test to make sure that the editor and sidebar work as it did
When you had the RCS feature flag on.
* there should not be any more settings or feature flags around turning
on the RCS service
Change-Id: I1c3e7f5a45eed5e010d8e425ae561e45f739fd3a
Reviewed-on: https://gerrit.instructure.com/186525
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
closes: CORE-2699 CORE-2700 UIDEV-99
This commit gets canvas-lms itself upgraded to babel 7. To do that we
also had to upgrade jest to v24. We had already got canvas-rce and
canvas-planner on jest24/babel7 but now this gets everything to babel 7.
so you will see a lot of things removed from yarn.lock since we don’t
don’t have to have different versions of everything for babel and jest
The other major thing this does is make it so any JS file in canvas
can become an @instructure/ui-themeable themeable component. This means
you no longer should have to put your css in app/stylesheets for any new
react components that you are writing.
Test plan:
1. Make sure that the perf of `yarn build:js` is on-par with what it was
before. We pass everything through the themeable babel transform now
so there is a chance it is slower. If it is majorly slower, we’ll have
to figure something out.
2. run a production weback build. The common (or any bundle for that
matter should get output exactly the same as it did before)
things to manually qa check:
* in a NODE_ENV=production enviornment, go to
/accounts/site_admin/developer_keys
* click the "+ Developer Key" button, it should open the modal.
(there are selenium tests that do this, but it was one thing that had
to be fixed to get jenkins to pass)
* on a course that is set up as a master course, click on the thing that
opens the blueprint courses tray.
* verify that when you click "Associations" and "Sync History" links in
that tray, that they dynamically load the webpack chunk for the
modal contents for that thing and then the modal is shown
(again, there are selenium specs that test that exact thing but it
is always good to manually test it too)
Change-Id: I802584228962b54480a500f8fe422f45c2dcac4c
Reviewed-on: https://gerrit.instructure.com/183965
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
I guess since our team owns these we can opt them in now
Test plan:
* nothing should change
Change-Id: Ic7207e1033869ef60644c41bd5c80a3e8532a6dd
Reviewed-on: https://gerrit.instructure.com/171471
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
this is the commit that actually does the syntax conversion from
coffeescript to javascript.
test plan:
* automated builds, which have javascript/selenium tests that cover
the screenreader_gradebook should pass.
* look at the log output of the linters-and-js build and verify
That the tests for “ScreenReader Gradebook” ran. (Without a change
In this commit, it was only running .coffee specs. But I changed it
So this step is to just make sure that did the right thing)
* manually try out the "individual gradebook" page and click around
to see that everything works
Change-Id: I32aeb14270ce751df49a1c7ae87cc57dceab69f6
Reviewed-on: https://gerrit.instructure.com/168020
Tested-by: Jenkins
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
If you see this in git blame, it is actually the parent-parent
(^^) commit that you want
These are all coffeescript files that are not imported via AMD
In any other file (eg there is no file that has
define([‘path/to/foobar’, (foobar) => …
That means these can be converted now. The ones that do have something
That imports them like that ^ need to be all converted at the same time
Otherwise you have to rewrite that as:
define([‘path/to/foobar’, ({default: foobar}) => …
Test plan:
* these files should all do exactly the same as what they used to
Change-Id: I3956cb16943e1404ab5bde39978bdc198d0e5b07
Reviewed-on: https://gerrit.instructure.com/167600
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
These are all things that were improperly importing either:
* a “default” object when there was only named exports
* a named export when there is only a default export
They work now because we tell babel to transpile es modules down
to commonJS in the “env” preset in babelrc but we want to eventually
not do that and these will need to be fixed before then
Test plan:
* no functionality should actually change in the code generated by
Webpack
* this build should pass
* but so should the build for the commit that follows this that
sets the `“modules”: false` option for babel-preset-env in
.babelrc
Change-Id: Ic6f49fb94ee0d0592ca5e34ef7ed0a5633c40d80
Reviewed-on: https://gerrit.instructure.com/167054
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
closes CORE-1460
Test Plan:
- When the selenium chrome deprecations build
runs, you should see data in sentry.
- You should see no change in behavior when run
in prod or without DEPRECATION_SENTRY_DSN environment
variable set.
Change-Id: I7703d44612af6189a13122de15fdb0d067d2110d
Reviewed-on: https://gerrit.instructure.com/161736
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
These were included in most bundles too
Change-Id: Ic0c8ec13c7c5b0f0a734f056d1918c8c7836bd30
Reviewed-on: https://gerrit.instructure.com/155490
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
These things (and all of their deps) are things that are required on
most of our pages. Because of the way our webpack is currently set up,
if something is not in the “CommonsChunk” (aka: vendor bundle), then
It will be bundled into any bundle where it was used. This meant that,
For example, discussions, announcements, account_course_user_search, etc
Each had their own copy of lodash and all of these instUI components
bundled into their own webpack file. That meant, as you browsed around
From page to page, you’d download like 10 different copies of lodash and
Re-download all of these instUI components (aka, wasted bandwidth,
Slower page loads). It also meant running webpack in production mode
would be slower because there was more bundling work for webpack to do
But most importantly there was more total bytes of JS for uglifyJS to
Uglify.
Test plan:
* `yarn webpack-production` should be faster.
(The difference for me was Time: 406140ms to Time: 276743ms)
* browsing around canvas on a non-super-fast connection with an empty
cache should feel faster since you’re downloading less JS per new page
view
Change-Id: I0d0de9aafe2fc94d2d734993ac8527c7e4af165b
Reviewed-on: https://gerrit.instructure.com/155134
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
This makes it so our sentry instance can be much more detailed
in the data that it collects
Change-Id: If44ea7bc54646988d681e6ad775951eb0e35436a
Reviewed-on: https://gerrit.instructure.com/154010
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
This makes it so that our karma build shows accurate source maps
to istanbul when reporting code coverage.
It also makes it so sentry errors get reported a bit better
Test Plan:
- Run build in non-prod with COVERAGE or SENTRY_URL env variables set
- Full source maps should be present
Change-Id: I19e4df833cad34b7877483f69aec676dfdd8fe7c
Reviewed-on: https://gerrit.instructure.com/153978
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Run `script/nuke_node.sh` to clean everything up
Run `yarn install` it should install everything for everything
Run `yarn build` and `yarn test` they should work exactly as before
Change-Id: I11a27ff2d705c6cbb3b3f9029dd8b32138706146
Reviewed-on: https://gerrit.instructure.com/151356
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
closes: CORE-1434
Test plan:
* all the icons should look the same as they did before
* make sure that icons that should flip for RTL (like the icons on
The course/user search pagination arrows, the icon to open the
Submission details tray in new gradebook, the “>” icons to expand
a submenu for the menus in new gradebook, etc)
Change-Id: I490d2dcd91b1b7ca2a116a1416718cd797f74901
Reviewed-on: https://gerrit.instructure.com/149482
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Reviewed-by: Chris Hart <chart@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Change-Id: Ice63f1cf2397c02c470af6ec6750de36efb61550
Reviewed-on: https://gerrit.instructure.com/148904
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
closes: CORE-1203
test plan:
* all automated tests should still pass meaning there was no file
that depended on i18n that didn't "import" it
Change-Id: I68356bee03ca8aa22e87895e76dcd00efa37ab56
Reviewed-on: https://gerrit.instructure.com/143457
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
closes: CORE-1201
test plan:
* the qunit & selenium tests that we have around this should still pass
(except for that one that had to be changed because the spec was
actually expecting the wrong thing and the old code was erroneous)
* load the app in fully production build and make sure translations
still work
Change-Id: Id06c38f60c1670fb93e85d5479ec747035c1158b
Reviewed-on: https://gerrit.instructure.com/143456
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>