Commit Graph

783 Commits

Author SHA1 Message Date
Ahmad Amireh b80e36daa3 replace node-sass with dart-sass
refs FOO-1116
flag = none

this switches brandable_css from using node-sass as an engine to
dart-sass

breaking changes that we had to accommodate (they are warnings at this
point but obnoxiously noisy):

- https://sass-lang.com/documentation/breaking-changes/slash-div
- https://sass-lang.com/documentation/breaking-changes/color-units

we have to make sure there are no regressions in the styles overall, and
in the issue described in SIS-3125 in particular, since that was the
reason we were stuck on node-sass@4.7.2

== TEST PLAN

- rebuild your assets
- verify there are no visual regressions , good luck

Change-Id: I19bf204df760eb56ad23c14294ef42ec6103c017
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/253054
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
2021-07-15 17:35:35 +00:00
Ahmad Amireh 52fe84dbb2 rework handlebars dependency on brandable_css
refs FOO-1116

right now in order to build the javascript, we must run brandable_css
first for the specific purpose of injecting into handlebars templates
their corresponding stylesheet file with the checksum as reported by
brandable_css

this patch moves things around such that Rails provides this mapping of
"handlebars template" to "CSS variant file checksums" in a global
variable (Rails is privy to this information already), webpack then at
build time injects only a reference to that mapping into the template,
then our runtime brandable-css JS helper will resolve that reference
from the mapping and request the correct file based on the current
user's variant

[1] rails assigns window.BRANDABLE_CSS_HANDLEBARS_INDEX with content
like this:

    [
      [ "new_styles_normal_contrast", "new_styles_high_contrast", ... ],
      {
        "0c": ["0f4f01ab86", 0, 0, "e3e7211701", 3, ... ],
        ...
      }
    ]

the structure of the mapping is explained in brandable_css[1], it is
a bit overtuned to reduce the size as much as possible since this is
included for ALL pages even though the templates in question may never
be rendered (right now it's ~1.5kB and should never grow)

[2] webpack asks @canvas/brandable-css to loadStylesheetForJST using the
contrived id for that file (frontend_build/i18nLinerHandlebars.js:92)

[3] brandable-css/index.js will decode that structure to arrive at the
exact URL for the stylesheet for that template for the current user
variant

with this , we should be able to optimize "rake canvas:compile_assets"
to run both brandable_css and webpack in parallel, which will greatly
mitigate the performance decrease from moving from node-sass to
dart-sass

== test plan

go to some assignment's syllabus page, edit the file
app/stylesheets/jst/courses/Syllabus.scss with something fun like:

    #syllabus .day_date { background: $fire; }

rerun `npx brandable_css`, reload the page and verify it's on fire,
optionally change your setting to enable High Contrast mode, reload
the syllabus page and verify the color changes (it picks up the other
variant stylesheet)

[1]: 80af6e70af

Change-Id: Ie48cc71d4837ee02313b2d45a9ad2944725acad2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/268615
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
2021-07-14 22:19:20 +00:00
Juan Chavez b4e636f559 Fixes decorative images and alt text RCE a11y observations
Fix behavior inconsistency on some specific cases image modal following
a11y check like data-decorative and alt-text attributes

fixes MAT-154

flag=none

Test plan:
- Navigate to a RCE instance
Test 1:
- Upload an computer image
- Select decorative checkbox
- Submit modal
- Verify that the <img> tag has this attributes:
role="presentation" alt=""
- Verify that there are no a11y observations
Test 2:
- Upload an computer image
- Click a11y checker
- Verify that a11y checker let you decide if you want to add an
alt-text or setting it as decorative
Test 3:
- Upload an computer image
- Select decorative checkbox
- Submit modal
- Verify that there are no a11y observations (Similar like 1st)
Test 4:
- Upload an computer image
- Click to image options
- Clear alt text input
- Select decorative checkbox
- Submit tray
- Verify that the <img> tag has this attributes:
role="presentation" alt=""

Change-Id: Idffd778e431dd8c598c044144ed088bfcfe9a9c8
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/267104
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Juan Chavez <juan.chavez@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
2021-07-07 20:51:14 +00:00
Augusto Callejas ea64444c39 Upgrade to outcomes-ui 2.0.0
closes OUT-4593

flag=outcome_alignment_non_scoring_content

test plan:
  - confirm that alignments on canvas wiki pages
    continues to work by testing g/235665

Change-Id: Ie06ff171093b622b2ca5a73464dd11035f1f6776
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/268516
Reviewed-by: Pat Renner <prenner@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
QA-Review: Brian Watson <bwatson@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2021-07-07 19:16:45 +00:00
Drake Harper 1745c0c544 fix discussion posts to be full width
flag=react_discussions_post
fixes VICE-1450

Test Plan:
-discussion topic text should use the full width

Change-Id: Iff6ca0833e0b2bfb1a4dfdb47b1a895964915bbc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/268456
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeffrey Johnson <jeffrey.johnson@instructure.com>
QA-Review: Jeffrey Johnson <jeffrey.johnson@instructure.com>
Product-Review: Allison Pittler <allison.pittler@instructure.com>
2021-07-07 18:47:10 +00:00
Charley Kline bb5ced7951 Insert language polyfills at page load time
Refs FOO-1891
flag=none

Canvas officially supports a fixed set of languages and locales.
Unfortunately, not all browsers support all of those (the worst
offender oddly enough is Google Chrome). Fortunately, polyfills
for almost all of the Canvas supported languages are available
via a polyfill package.

This commit introduces a function that asynchronously loads the
polyfill for a requested language. It does nothing if it sees
there is already native support in the browser for that
language. The function can be imported and run to dynamically
switch in and out the polyfills as necessary, but since Canvas
never changes ENV.LOCALE except at page load time, it should
suffice to call it at front end initialization time; this was
added to ui/index.js as a part of its "readiness" checks.

The missing one (that NO browser supports) is Haitian Creole;
we will have to probably build our own locale data file for
that one.

This takes care of polyfilling DateTimeFormat, NumberFormat,
and RelativeTimeFormat. We can always add other Intl systems
if the need arises.

Test plan:
* Be on Chrome (which does not support the Welsh language)
* In the browser console, verify no native support for Welsh:
      Intl.DateTimeFormat.supportedLocalesOf(['cy'])
      ... should return an empty array
* Go into your user settings on Canvas and change your language
  to Welsh (Cymraeg). Reload the page to make it take effect.
  Now your settings page should appear in Welsh.
* In the browser console, verify that dates and times can be
  formatted correctly in Welsh (thanks to the polyfill):
      Intl.DateTimeFormat('cy', {
        dateStyle: 'long',
        timeStyle: 'long'
      }).format(new Date())
* That should display a date and time in Welsh (most prominently
  seen in the name of the month).

Change-Id: I40632344ba1d8679aba1a976fcb55af97636be4b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/267359
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Ahmad Amireh <ahmad@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2021-07-03 00:07:55 +00:00
Ed Schiebel c7af7b7e02 Necessary tweaks I discovered adding the CanvasRce component to a page
closes MAT-277
flag=rce_enhancements

Factored these changes out of the changes I had to make for MAT-253 where
the CanvasRce component was put on a real page and tested.

1. update jest.config.js to mock the tinymce-react Editor component
2. add a missing dependency to package.json
3. tweak tests to use the new mock
4. use safe-dereference operator in places where specs might
   not have a fully formed ENV

test plan:
  - this is a tough one. It has to pass jenkins, but beyond
    that it will take the changes for MAT-253 to prove these
    changes do all we need

Change-Id: I5804d1a1f13dbfbc21a3213db92d7afe74e576e6
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/267427
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Gary Mei <gmei@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2021-06-22 21:11:02 +00:00
Ahmad Amireh 1a34708e4a upgrade & dedupe node packages
fixes FOO-2037

the result of removing yarn.lock and reinstalling packages according to
the latest version within their specified range

Change-Id: I1d2851d5a1a9fc6caeddc388492622ffd4f59379
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/255460
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
2021-06-21 19:46:52 +00:00
Ahmad Amireh 051ecc181c [instui-7] upgrade canvas to v7 but not planner
fixes FOO-1859

leave canvas-planner's dependency on DateTimeInput (part of v6) for
later

test plan: the world doesn't end

Change-Id: Iedbf1ccf0f815ed96f6f8f7d2a151f263ea35010
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/266766
Reviewed-by: August Thornton <august@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: August Thornton <august@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: August Thornton <august@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2021-06-09 22:18:14 +00:00
Ahmad Amireh fe750735d7 [instui-7] rewrite deprecated imports
fixes FOO-2047

according to the following BREAKING CHANGES:

- Removed ui-a11y, ui-elements, ui-layout, ui-forms
- Removed Modal, Popover, Tooltip and Tray from ui-overlays

test plan: there should be no behavioral changes as we're picking the
same components only from a different location

Change-Id: Id065d6e1d6eb49a3968c7c9db9443edaec9c0dfb
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/266452
Reviewed-by: Charley Kline <ckline@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2021-06-09 17:52:07 +00:00
Mysti Lilla 98f19b3eaa Stop using "more" tab for LTI submission
fixes INTEROP-6733
flag=none

Test plan
- Install more than 3 LTI tools
- Verify that you can launch an LTI
  tool from the assignment submission
- Verify that all LTI tools load
  and look ok
- Verify that if you choose the wrong type
  of file from an LTI tool that it won't
  let you submit
- Verify other types of submissions
  also still work

Change-Id: If03f0d0e7532741d14bac0906feb07b66f1887b7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/265629
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
Product-Review: Karl Lloyd <karl@instructure.com>
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
Reviewed-by: Sean Scally <sean.scally@instructure.com>
2021-06-01 20:55:08 +00:00
Ed Schiebel 0cf3bea009 Update eslint to v7
so it stops complaining about the ?. operator, among other things

closes MAT-45
flag=none

test plan:
  - npx eslint ./path/to/a.js
    on a file with ?. in it doesn't complain

Change-Id: I6056e25ce9c53a8e652d6e4eec1280057369cf26
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/265387
Reviewed-by: Guilherme Baron <gbaron@instructure.com>
QA-Review: Guilherme Baron <gbaron@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2021-05-20 18:28:51 +00:00
Aaron Ogata 55442143fd align all JS output directories to single directory on Jenkins
refs DE-687

As part of our work on EKS, we need to align the EC2 / EKS paths to pull artifacts from the same path on the container and host. As a step towards that, ensure that all containers output their test files to the same directory.

Change-Id: I312fb5f8505122c68ba5aaba30730aa5c1887177
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/265370
Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
2021-05-20 17:28:03 +00:00
Guilherme Baron 0bb71d9123 Upgrade tinymce-a11y-checker to v3.0.0
closes MAT-123

Test plan:
- make sure rce a11y validation works properly

Change-Id: I494dcb821c9f14145913e329f9c975b2425ae774
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/264840
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Juan Chavez <juan.chavez@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Product-Review: Guilherme Baron <gbaron@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
2021-05-13 20:44:35 +00:00
Ed Schiebel 5e369247e8 Update axios to latest
Fixes a security vulnerability
I had to bump the es-check es8 -> es9 because the new version of
axios-cache-adapter used an object spread operator which es8
didn't like, though it is supported by all our browsers and
I've checked that it does work at the spot es-check was flagging

closes MAT-115
flag=none

test plan:
  - all the specs still pass
  - everything seems to work well
  - poke about in /accounts/2/developer_keys, because I made a little
    change in create/edit developer keys.

Change-Id: Ib912b3c1e2e497e23999adc72aaa1d8abf53a345
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/264679
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Juan Chavez <juan.chavez@instructure.com>
Reviewed-by: Gary Mei <gmei@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
2021-05-12 13:16:54 +00:00
Manoel Quirino Neto 91bbcd7a25 Refactor EditGroupModal with react-final-form
closes OUT-4312
flag = improved_outcomes_management

Test plan:
  - Try to edit a group using Improved Outcomes Management
    and make sure no functionality was broken

Change-Id: Ic7f7cf77189b7688187cfd530325aecc393a92c0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/261655
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Pat Renner <prenner@instructure.com>
QA-Review: Brian Watson <bwatson@instructure.com>
Product-Review: Augusto Callejas <acallejas@instructure.com>
2021-05-11 17:16:03 +00:00
Ahmad Amireh 30a45abac9 add WEBPACK_ANALYSIS and WEBPACK_PEDANTIC flags
flag = none

set WEBPACK_PEDANTIC=0 to prevent the build from bailing on warnings
set WEBPACK_ANALYSIS=1 to generate an html report of the bundles

test plan ::

run webpack with the analysis flag and verify it 1) works and 2)
generates a report at tmp/webpack-bundle-analysis.html

    WEBPACK_ANALYSIS=1 \
    WEBPACK_PEDANTIC=0 \
    NODE_OPTIONS="--max_old_space_size=8096" \
      npx webpack

Change-Id: Icc77b2477c2fb9d3394e4c41d2377212f93534c6
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/261892
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ahmad Amireh <ahmad@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
2021-05-05 19:59:46 +00:00
Charley Kline 998395a647 Add shared DateTimeInput component
Closes FOO-1857
flag = none

InstUI 6 had a combo DateTimeInput component which went away as
of version 7. It's used in a couple of places in Canvas, so we
recreate that functionality in a shared component. Tricky stuff
to work in all time zones and all DST systems.

Test plan:
* tests pass (nothing uses this yet)
* not sure if the included Storybook will work or not

Change-Id: I053a936e5cb505100a0e44571d29584094bad4f2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/262459
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2021-04-28 21:12:24 +00:00
Ed Schiebel 568810861f Storybook config fixes
closes MAT-65
flag=none

- The update to package.json corrects a typo in the command line,
  line, plus adds a directory needed to load brandable_css
- The instui babel presets in the new .babelrc.json file are needed
  if you want an RCE in storybook
- The change to ENV in preview.js is needed if you want an RCE in
  storybook

test plan:
  - storybook builds and everything still works
  - components are rendered using the Lato font family

Change-Id: I04c45e4dc6bd853c3513ff689d63f6388d874ec1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/263291
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeffrey Johnson <jeffrey.johnson@instructure.com>
QA-Review: Jeffrey Johnson <jeffrey.johnson@instructure.com>
Product-Review: Jeffrey Johnson <jeffrey.johnson@instructure.com>
2021-04-23 19:46:51 +00:00
Ed Schiebel d06e44eed8 Add Auto Show Closed Captions user feature
closes MAT-40
flag=auto_show_cc

Requested by the Columbus Public Schools (my homies), create a
setting so videos automatically show CCs when playing
videos.

test plan:
  - create RCE content and include a video
  - add a couple CC files in different languages, including the
    user's language (the .srt files don't have to be in another language,
    just tell canvas they are)
  - save
  > expect no CC without selecting them from the CC menu in the
    media player
  - click on the user's avatar to open the user's tray and choose Settings
  - enable the  "Automaticaly show media captions" feature
  - refresh to the page with RCE content
  > expect the CCs in the user's language to automatically show
  - change the user's language to another one you have CCs for
  - refresh the page with the video
  > expect the new language's CCs
  - change the user's language to something not in the CC list
    and not English
  - refresh the video page
  > no CCs and nothing bad happens.

note: I wanted to test with with various combinations of en, en-US,
and en-GB but canvas won't let you add CCs in regional locales. I don't
know why, but that's a problem for another day.

Change-Id: I355fd12c5ea42fe5bc8e776a0c602c2857aaf4c6
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/262500
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Nate Armstrong <narmstrong@instructure.com>
QA-Review: Nate Armstrong <narmstrong@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2021-04-12 17:44:51 +00:00
Ahmad Amireh ec939255d7 don't swallow stderr during build:packages
flag = none

stderr output of the individual processes fed to "wsrun" are being
swallowed if it's running in --parallel and asked to --collect-logs

see: https://github.com/hfour/wsrun/issues/107
see: https://github.com/hfour/wsrun/issues/92

== test plan

grab the following image from starlord and verify you see the actual
error output from the canvas-rce package:

    export IMAGE="starlord.inscloudgate.net/jenkins/canvas-lms:63.262363.4-postgres-12-ruby-2.6-failed" &&
    docker pull "$IMAGE" &&
    docker run \
      -v "$PWD"/package.json:/usr/src/app/package.json:ro \
      --rm -it \
      "$IMAGE" \
        yarn build:packages

Change-Id: I7650e6b9b83bb22faea569eba05a9f73f5e72b4f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/262410
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: Ahmad Amireh <ahmad@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
2021-04-07 20:49:27 +00:00
Ahmad Amireh 4243097b21 rename some things
fixes FOO-1265

[skip-eslint=true]
[pin-commit-analytics=7e49eefd7f59cbf43fd03bf8957bbbfa76f8d9d5]
[pin-commit-demo_site=adade2e38e46a358a4643cd3db2fe5ccffe39ec5]
[pin-commit-instructure_misc_plugin=47a3161102b0611af56d134fbd0c828ddc1b8abf]
[pin-commit-migration_tool=0dbac2f5b421d894395605ce4b583ef0f7d60b22]
[pin-commit-multiple_root_accounts=cc96d28c0d59bbe47acc64de4fdd8e1d2b029805]

Change-Id: I14c07f20bd260cf0de1f48ceb70b3c2313edf2d2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/258807
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Michael Ziwisky <mziwisky@instructure.com>
QA-Review: Michael Ziwisky <mziwisky@instructure.com>
Product-Review: Michael Ziwisky <mziwisky@instructure.com>
2021-04-06 01:12:49 +00:00
Caleb Guanzon 8214429684 add POC MessageListActionContainerMSW test
flag=canvas_inbox
fixes VICE-1240

TEST PLAN:
- yarn
- yarn jest 
  app/jsx/canvas_inbox/containers/__tests__/CanvasInboxFullPage.test.js
  
  should pass

Change-Id: Ibaf618e8abae4aad63d6e1dabf1a1ea20f5c9dd6
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/261392
Reviewed-by: Brian Watson <bwatson@instructure.com>
Reviewed-by: Davis Hyer <dhyer@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Davis Hyer <dhyer@instructure.com>
Product-Review: Davis Hyer <dhyer@instructure.com>
2021-03-26 17:37:01 +00:00
Charley Kline 59d5297fa6 Update InstUI component source modules via codemod
Closes FOO-1717
flag = none

This was the result of the InstUI codemod per the v7
upgrade guide instructions

Test plan:
* build still passes
* no clue how we'd manually QA all this. Any ideas?

Change-Id: I6ca72bfabca0628761be00d8bed27dda103e0711
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/260817
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
2021-03-19 16:28:01 +00:00
Jeff Largent 141c0c5b9b Upgrade InstUI to latest minor / patch versions
This change aims to fix tree-shaking issues introduced in InstUI 7 by
the addition of `"type": "module"` to the packages' package.json
files. It updates the following major versions to their latest minor /
patch versions:

* 7 -> 7.4.4
* 6 -> 6.27.0

It also updates @instructure/ui-icons from v6 to v7, since nothing has
changed between those versions except the addition of new icons and a
slight tweak to the "add" and "x" icons to make them more closely
match product designs.

It also updates @babel/core, @babel/runtime, and
@babel/runtime-corejs3 to latest (7.13.10) to fix this babel issue:
https://github.com/babel/babel/issues/12854.

The dependency changes also shuffled around the webpack build a bit--
the assignment_edit bundle is now (slightly) over the max asset size
limit, while quizzes_bundle and screenreader_gradebook are not any
more.

fixes LS-2016
flag = none

Test plan:
  - Ensure everything in canvas still works and looks the same

Change-Id: I262012c9b752cec617f425c57e8c276bc7870b21
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/260391
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Ahmad Amireh <ahmad@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
2021-03-15 17:39:32 +00:00
Charley Kline 8216877da3 Update webpack-cli for webpack:analyze bugfix
Fixes FOO-1674
flag = none

Update webpack-cli dependency to pull in a bugfix which was
preventing the webpack:analyze tool from working.

Test plan:
* yarn webpack:analyze works again
* nothing else broke (major version number changed!)

Change-Id: I5f6ee48ea7b24bda9e13e73f44cee8cf23abfc22
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/260189
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeff Largent <jeff.largent@instructure.com>
QA-Review: Jeff Largent <jeff.largent@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2021-03-08 20:30:46 +00:00
Ahmad Amireh 6684592adf say PLEASE to npx when running yarn-deduplicate
because simply asking it to run yarn-deduplicate is no longer good
enough, you must now be polite when doing it[1]:

    To prevent security and user-experience problems from mistyping
    package names, npx prompts before installing anything. Suppress
    this prompt with the -y or --yes option.

we will also be updating npm to the latest to catch such issues in the
future

== test plan

running "rake canvas:compile_assets" using npm > 7 completes
without hanging indefinitely at the "install dependencies" stage

[1]: https://docs.npmjs.com/cli/v7/commands/npx#compatibility-with-older-npx-versions

Change-Id: I81e044d20143991cf6103084f44ce8d4c9011f5b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/259662
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: Ahmad Amireh <ahmad@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
2021-03-02 21:58:31 +00:00
Jeff Largent fea18cf108 Upgrade @testing-library dependencies to latest
Most of the upgrades were backwards-compatible, but I made a few
changes:
* Replaced usages of wait, waitForElement, and waitForDomChange with
  waitFor as recommended here, since they are deprecated:
  https://testing-library.com/docs/dom-testing-library/api-async/#deprecated-methods
* Replaced '@testing-library/react-hooks' imports with
  '@testing-library/react-hooks/dom' as recommended here:
  https://react-hooks-testing-library.com/installation#being-specific
* Fixed some issues with @testing-library/jest-dom's toBeDisabled
  matcher not checking for the disabled attribute on parent elements--
  e.g. changing this:
  `expect(getByText('Button Text')).toBeDisabled()`
  to this:
  `expect(getByRole('button', {name: 'Button Text'})).toBeDisabled()`

closes LS-1831
flag = none

Test plan: tests pass in Jenkins

Change-Id: Ia549950dade5fd5b2597a3002b11f4f0a6f740f2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/258923
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2021-02-23 20:52:36 +00:00
Davis Hyer 9dd255a51d finalize discussion post redesign
fixes VICE-932, VICE-934
flag=none

test plan:
  - checkout the storybook instances for:
    - PostMessage
    - PostToolbar
  - changes should reflect the latest designs

qa risk: low

Change-Id: I338a05de2e8c4d42c23d246c1d1fa893de963c20
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/258269
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeffrey Johnson <jeffrey.johnson@instructure.com>
QA-Review: Jeffrey Johnson <jeffrey.johnson@instructure.com>
Product-Review: Jeffrey Johnson <jeffrey.johnson@instructure.com>
2021-02-12 21:48:53 +00:00
Brian Watson 3f5c2b3f12 Add storyshots to storybook
refs OUT-4237

flag=none

Test-plan: > yarn install
 > yarn storybook
 - Look through outcomes stories in storybook quickly,
   verify everything loads
 > yarn test-storybook
 - Verify everything passes, if something doesn't pass,
   verify that that corresponding story is also broken in
   storybook
 > echo $? # should return 0 and jest results should say 0 failures
 - Change one of the stories so that it doesn't render,
   For example: undo the changes made to ManagementHeader.stories.js
   in tis PS
 > yarn test-storybook
 - Verify that it fails
 > echo $? # should return 1 and jest results should say 1+ failure(s)
Change-Id: I492f50d861dccdfdf4a958fd007da44041f9dd49
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/258297
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeffrey Johnson <jeffrey.johnson@instructure.com>
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
QA-Review: Pablo Gomez <pablo.gomez@instructure.com>
Product-Review: Brian Watson <bwatson@instructure.com>
2021-02-11 22:37:36 +00:00
Aaron Shafovaloff 4e5c9d249b upgrade prettier
test plan: specs pass

Change-Id: I81883f8dc88f9ae96fc45fc0899d2f500abe56f2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/258174
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Aaron Shafovaloff <ashafovaloff@instructure.com>
Product-Review: Aaron Shafovaloff <ashafovaloff@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2021-02-04 19:32:09 +00:00
Ed Schiebel 4b63bb4bd4 Replace @instructure/ui-core components
[fsc-timeout=30]

closes LS-1792
flag=none

I had to add ignore_js_errors:true to some of the selenium specs
because the global nav is generating a react "can't update state on
an unmounted component" errors. FOO-1541 was created to look into
that.

test plan:
  > it passes js and selenium specs (this is the biggie, I think)

  I changed 404file upload, and grade_summary pages

  - go to /foo
  > expect the "sorry" page to look the same as before
  - go to file upload
  > it works
  - go to /courses/:id/grades/:stud_id
  > expect the "Arrange By" Select to work as expected
    (I couldn't figure out how to get any other of the Selects
     to show up, but looking at the selenium specs provides clues.
     I'm sorry that I'm not more help.)

Change-Id: I8eceb721b17e2cb1aec17de56a0145610b11d6ab
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256767
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Jackson Howe <jackson.howe@instructure.com>
Reviewed-by: Jeff Largent <jeff.largent@instructure.com>
2021-02-03 15:00:25 +00:00
Aaron Ogata 2d080018da fix JS job sanity around COVERAGE var
refs DE-462

Change-Id: Ie5bce0bdf0e7a16eb9424813abd49000d5d819d2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/257532
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
2021-01-27 16:24:14 +00:00
Ahmad Amireh 486b0bf72c upgrade to node14
fixes FOO-1527
flag  = none

test plan: you can install node modules and run webpack

Change-Id: I33347d791b0923f4471b555c6fac303b098b1ef4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/257333
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2021-01-27 15:33:52 +00:00
Aaron Ogata f1e07cebbe automatically dedupe yarn on postinstall
Change-Id: Idaf1b07f9609f4948006f6be9aac357ab0816e86
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256887
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
2021-01-20 19:13:41 +00:00
Ahmad Amireh 36920ba9e1 remove "exports" from all @instructure/ packages
refs FOO-1331
refs LS-1657
flag = none

test plan: canvas-rce mocha tests work after upgrading to inst-ui 7

Change-Id: Ibe8d94fdd5a994fda2c7b9703dccfb77a62415ca
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256766
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
2021-01-15 19:39:02 +00:00
Ahmad Amireh 46f8efd61f modernize canvas_quizzes
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>
2021-01-14 22:45:10 +00:00
Ahmad Amireh a281e066e1 extend JS source files without relying on filepath
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>
2021-01-14 17:15:06 +00:00
Aaron Ogata 360ddf34a0 improve lint:browser-code debugging
refs DE-465

Change-Id: I560c445ee7bd4b501686bb10bc4ffb64b4b910ad
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256692
Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
2021-01-14 16:18:14 +00:00
Aaron Ogata 149f47778b deduplicate yarn.lock
refs DE-397

De-duplicating yarn.lock is necessary for some future InstUI upgrade work. In order to do this, we need to patch karma-webpack to avoid watching too many files within our JS job. We also need to pin babel-plugin-dynamic-import-node to the latest to work around a breaking change that causes “request of a dependency is an expression”.

Both of these version pins are work arounds and will be addressed by our efforts to upgrade webpack to v5.

Test Plan:
1. Ensure that “yarn dedupe-yarn” does not produce any file changes.
2. Ensure that the “JS (Karma)” job does not produce any warnings like “request of a dependency is an expression”
3. Ensure that the “JS (Karma)” job does not produce any warnings like “System limit for number of file watchers reached”
4. Ensure that Canvas front-end builds & behaves properly

Change-Id: I94d77bd775bc12f9f96ac44640c862ff3e3dee79
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256674
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Ahmad Amireh <ahmad@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
2021-01-13 22:55:36 +00:00
Michael Ziwisky d39b927c3a update JS testing docs
flag=none

this commit also removes the phantomjs docker-compose service which has
been broken for years, ever since PhantomJS was removed from
karma.conf.js in https://gerrit.instructure.com/c/canvas-lms/+/102169

test plan:
 - follow the docs to ensure you can run a targeted JS test in docker

Change-Id: Ifa1647897a7a9605e097aeaf89e718c167d379fc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256179
Reviewed-by: Nate Armstrong <narmstrong@instructure.com>
QA-Review: Nate Armstrong <narmstrong@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Michael Ziwisky <mziwisky@instructure.com>
2021-01-06 22:47:53 +00:00
Ed Schiebel a0e985948e Update tinymce and @tinymce/tinymce-react
closes LS-1609
flag=rce_enhancements

Had to nohiost tinymce so it remains w/in canvas-rce
where RCEWrapper.js can require tinymce's stylesheets, but it
still needs to be a dev dep. of canvas-lms because there are
specs that import tinuymce.

Moved the matchMedia jsdon polyfill into jest-setup where it can be
used by everyone. Need it there since the new tinymce calls it.

test plan:
  - specs pass
  - the RCE still works and looks the same
    Sorry, I don't know what else to say

Change-Id: I8c956664176b7c25995a55e0c6fea4dafad3970f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/255604
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Nate Armstrong <narmstrong@instructure.com>
QA-Review: Nate Armstrong <narmstrong@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2020-12-21 22:23:52 +00:00
Ahmad Amireh 5a6c8ad1f1 [node12] bump "engines" in package.json
refs FOO-1116
flag = none

test plan: we can install `yarn install`

Change-Id: I0e78958130368a11eb007d1ffddbd075f27d9380
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/254937
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ahmad Amireh <ahmad@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
2020-12-11 17:52:07 +00:00
Ahmad Amireh 45cb519d52 [node12] upgrade to node 12.19.1 (LTS)
fixes FOO-1116
flag = none

this upgrade was problematic mostly because of Node's support for ES
modules (ESM) that is still fairly recent and introduces some complexity
around packaging. This is also the reason for the considerable hack
related to @instructure packages (see inline documentation) that can be
removed once we fix things upstream

| test plan |
| --------- |

- install node 12 if needed (e.g. not on docker)
- purge your node modules:

    rm -rf {.,client_apps/*,gems/*,gems/plugins/*,packages/*}/node_modules

- make sure you can still build locally (native/docker)

    bundle exec rake canvas:compile_assets

Change-Id: If9605ac428f0ff228f8852f0becb9fbac750f1f2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/253166
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2020-12-11 03:45:31 +00:00
Ben Nelson 6d91032edc create MessageListHolder and MessageListItem
This is the message collection on the left hand side of the Inbox.

Test Plan:
 - Run Storybook
 - Verify that the MessageListHolder story is rendering as expected
 -- Unread converstaions should have an unread badge
 -- The number badge should show the total number of messages in the
      thread
 -- The checkbox should fire the onSelect action
 -- Mousing over a conversation should show its star button
 -- Clicking the star button on a conversation should fill in the icon
      and make the button persist even when moused out of the conversation
 -- Clicking the star button should fire the onStar callback

closes VICE-844

Change-Id: Ia554f8fe9717934dcb72569360a7b180537583c1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/253560
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Davis Hyer <dhyer@instructure.com>
QA-Review: Davis Hyer <dhyer@instructure.com>
Product-Review: Davis Hyer <dhyer@instructure.com>
2020-12-04 00:54:22 +00:00
Ahmad Amireh cd0a4ffdbe [node12] upgrade node-sass
refs FOO-1116
flag = none

this has been a controversial upgrade since, on the one hand, node-sass
is deprecated and we need to move to dart-sass, but then doing that will
require some work as i've seen a few major visual regressions caused by
the transition (see patch for dart-sass)

we can get node-sass unto the latest (that does compile under node12+)
by changing our use of :not() with a selector list:

    :not(.a, .b)

to:

    :not(.a):not(.b)

see this gist for a more thorough explanation and rationale: https://gist.github.com/amireh/867a00a36588fc6490c38813cf2558c3

:: test plan ::

- we are able to install dependencies on BOTH node10 and node12
- we must make sure there are no regressions to SIS-3125

Change-Id: If8c396e6404cb6d868997b399007a06e8d1e9548
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/253764
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: August Thornton <august@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2020-12-02 18:54:32 +00:00
Jeffrey Johnson 408999d667 Introduce Storybook to Canvas + i18N Canvas Inbox fixes VICE-947
This story contains work to move Canvas Inbox and Storybook to `app/jsx` inside our Monolith. Storybook should now be enabled for all of `app/jsx` and works with our existing I18n code after updating webpack to load translations correctly.

Test Plan
1. Install node modules with `yarn`
2. At Canvas-LMS root, run `yarn storybook`
3. Storybook should open, test that Canvas Inbox components work as expected

Change-Id: Iccd2b103164a2da4e37b5746f4d9d2b5faf5f29d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/253024
QA-Review: Davis Hyer <dhyer@instructure.com>
Product-Review: Davis Hyer <dhyer@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Davis Hyer <dhyer@instructure.com>
2020-12-02 18:44:09 +00:00
Ahmad Amireh bf02bf13cb [node12] upgrade gulp
refs FOO-1116
flag = none

verified contents of public/dist/ are intact across versions with a cmd
like this:

    find ./public/dist -type f -exec md5sum {} + | awk '{print $1}' | md5sum

== TEST PLAN

run "npx gulp rev" and verify it still works

== BONUS TEST PLAN

wipe out node_modules/, run "rake canvas compile:assets" and verify that
still works.

Change-Id: Ie072e415a89478e58a98b04b7826f974ba63f904
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/253041
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>
2020-11-20 23:52:44 +00:00
Ed Schiebel 83aebb83d7 Fix kb nav in RCE tray's filter drop-downs
closes LS-1621
flag=none

Strictly speaking, the bug this fixes was addressed by updating
the <Select> in the RCE's Filter component by changing it to
<SimpleSelect>, but there was a bug in an earlier version that
had me update instui v7 components in canvas to the latest versions.

You need to run yarn (canvas:compile_assets does this for you), or
maybe even nuke_node before moving forward.

test plan:
  - in the RCE, open the content tray (e.g. Documents > Course Documents)
  - use the keyboard to navigate thru the filter area
  - use arrow keys to open the various dropdowns and make changes
  > expect it to work, and for the tray not to unexpectedly close

Change-Id: Id48441ef51ca2053b2b4b4cae27b90fcab6f4308
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/252965
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jackson Howe <jackson.howe@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2020-11-20 17:06:30 +00:00
August Thornton a4b36ec653 convert group edit JQueryUI dialog to InstUI modal
This commit covers the teacher/admin view of editing user
groups. Need to look into removing the old code in a followup
change.

closes FOO-909
flag = none

test plan:
 - Verify the test plan in the following gerrit still plays out:
   - https://gerrit.instructure.com/c/canvas-lms/+/247628
 - You'll need a student created group set and an admin created
   group set to test all the angles
 - Student Group Set
   - Create a group and remember its state
   - Go to edit said group
     - Verify the Group Name field is populated
     - Verify the Joining select is populated with prior choice
   - Edit the Group Name and Joining select dropdown
     - Verify the group collection is refreshed with your newly
       updated group
     - Go to edit the group and verify your changes saved
       successfully
 - Admin Group Set
   - Create a group and remember its state
   - Go to edit said group
     - Verify the Group Name field is populated
     - Verify the Group Membership Limit is populated
   - Verify as you did with the Student Group Set
   - Ensure the group has a member count
     - Edit the group and set the Group Membership Limit lower
       than your member count
       - Verify you get a descriptive error
 - The updated group modal should behave as it did before and
   be accessible and keyboard navigable

Change-Id: I6bd4c6983239c9ed779fa41d297dab81c364fcbe
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/250185
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Ahmad Amireh <ahmad@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2020-10-19 22:26:16 +00:00
Clint Furse 146d27fae3 update Microsoft Immersive Reader SDK
closes LS-1377
flag = immersive_reader_wiki_pages

Test Plan:
- Enable immersive reader.
- Because there doesn't seem to be a way to run this locally
  (without consul), I had to temporarily modify the
  immersive_reader_controller.rb and added
  prod creds to get this to test.  see me for more details

Change-Id: Ifaa7edfa94ff29856ae6b474548e0f450b9d4c6c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/245869
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Clint Furse <cfurse@instructure.com>
2020-08-27 15:41:17 +00:00
Aaron Ogata e5e6fa54f1 move packages into dependencies layer for caching
refs DE-216

[change-merged]
[build-registry-path=jenkins/canvas-lms/de-216]

Test Plan:
1. Ensure that docker-compose build works locally
2. Ensure that packages building is cached when files aren’t changed
3. Packages build correctly when modified

Change-Id: I3e775e5d7eb51ba06078314b50bf2f8efb6d7d0b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/245423
Reviewed-by: James Butters <jbutters@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
2020-08-24 14:40:21 +00:00
Aaron Ogata 99d0010d86 minimize yarn caching dependencies
refs DE-209

[change-merged]
[build-registry-path=jenkins/canvas-lms-de-209]

Test Plan:
1. Ensure that `docker-compose build` works locally
2. Ensure that yarn is cached on Jenkins when run on a separate node

Change-Id: Icadf02b9e999eafd14f493ae1c0649ed0ffe58bf
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/245336
QA-Review: Aaron Ogata <aogata@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
2020-08-18 15:53:28 +00:00
Ed Schiebel a0dfe0a334 Update ui-media-player to v7
This change bumps the ui-media-player from v5 to v7.
I also found a bug in the logic for retrying fetching the video sources
that's fixed here so we don't call fetch unneeded extra times. Learned
a lot about the interaction between useEffect and timers used to retry
actions.

Updated the @testing-library components in canvas-rce. waitFor in the new
version uses a mutation observer, not just a timer which helped make specs
more reliable.

Also did some significant rework of CanvasMediaPlayer.test to get it to
pass, especially without a bunch of react or testing-library warnings.

With PS13, I finally figure out how to listen for the onLoadedMetedata
out of <MediaPlayer> without having to reach under the hood and grab
the <video> element

closes LS-1077
flag=none

test plan:
  - audio and video still works, but with the new player
  - record a longish (30s+) video
  > expect to see the
    "Your media has been uploaded and will appear here after processing"
    message, and for the video to eventually play.
  - record or insert a portrait oriented video
  > expect it to be letterboxed in the player
  - record or insert audio
  > expect it to be loaded in the player

Change-Id: I797e6f16e763d7029eaf19149439e973590e978c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/244463
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: Peyton Craighill <pcraighill@instructure.com>
2020-08-17 16:02:52 +00:00
Jacob Fugal 2b3886c5f4 extend client_credentials oauth2 grants for CD2
refs SAS-1540

* adds an audience setting to developer keys, so a key can be set to
  target external audiences with its credentials grants
* when a key with an external audience grants credentials, the token is
  signed with an asymmetric key instead of the internal symmetric key
* external audiences can retrieve the corresponding public keys from
  /login/oauth2/jwks
* credentials issued by developer keys with an account id include the
  account's guid in a custom claim

includes a refactor of key storage and rotation in consul, which had
already been done for LTI. but it wasn't really a feature of lti, just
something used by LTI, and we needed the same for key management for
this. moved it to be part of Canvas::Security

Change-Id: Ie5c0fcee6fc21687f31c109389a3bcc1ed349c5d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/243606
QA-Review: Jonathan Featherstone <jfeatherstone@instructure.com>
Reviewed-by: Jonathan Featherstone <jfeatherstone@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
2020-08-13 18:52:47 +00:00
Alex Anderson 590f43aa32 Enables adding alt text to image uploads
It also allows editing other a11y features, like making
the image presentational or embedding it as a link.

It splits out the Image Options form from the editor tray
to avoid copy/pasting too much. The logic and state are
still separated between the upload and edit forms, since
they don't overlap super well.

It also edits the logic around uploading and embedding
images to support the extra attributes.

A few Jest tests were added to check for appropriate
attributes being added.

Test Plan:
With RCE Enhancements enabled, visit an RCE page
Open the image upload modal and choose an image
Notice the image attributes form underneath.
Add alt text. Adjust the other attributes as desired.
Upload the image
Open the Raw HTML Editor.
Notice that the alt text is added to your image, along
with whatever other attributes you changed.
Decoration Images are given the `role="presentation"`
attribute; Display As "Link" embeds the image as a
link.

Fixes LS-445

flag = rce_enhancements

Change-Id: I462e2c322a3b39fc4fa9f47b675426c581c3a398
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/242736
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Peyton Craighill <pcraighill@instructure.com>
2020-07-28 19:48:17 +00:00
Drake Harper 0469b0227a Change inbox avatar to use inst-ui
Test Plan:
-inspect avatar on inbox message is rendered from inst-ui

fixes VICE-17

flag=none

Change-Id: I92941e079b63a3a60468e1e894059c20e15b1251
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/241435
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeffrey Johnson <jeffrey.johnson@instructure.com>
QA-Review: Jeffrey Johnson <jeffrey.johnson@instructure.com>
Product-Review: Jeffrey Johnson <jeffrey.johnson@instructure.com>
2020-07-01 17:22:03 +00:00
Ed Schiebel c603d6e9f2 fix audio player and video player sizing
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>
2020-06-04 12:58:00 +00:00
Ed Schiebel 656de86a31 update build to load es modules from subpackages
closes LA-995
flag=none

1. unify the instui ui-babel-preset options across sub-packages
2. include "@instructure" as part of each sub-package name
3. unify the commonjs and es module directory structure
4. use index.js to export anything needed to be imported from
   outside the package. This removes any dependency on the
   package's internal directory structure and makes importing
   independent of commonjs vs es module simple
5. move canvas-rce's main entry from async.js to index.js
   (I'm 98% sure index.js was an artifact of the old rce)

test plan:
  - canvas-lms builds locally and in docker. (Jenkins builds
    the docker image, so I presume if it passes jenkins,
    the docker build wasn't broken)
  - sniff test the result, esp. student planner and the new rce.
  - yarn build:watch from canvas-rce, canvas-planner, and
    canvas-media packages should work, and yarn build:watch
    from canvas-lms should pick-up any changes.
    (I've verified this by finding a console.log statement
     and changing the message then use devtools to see it's in
     the new source after refreshing the browser)

Change-Id: I5f242d06ad655597cd416057d4b740d4bd86003b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/238603
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>
2020-06-03 13:41:38 +00:00
Michael Brewer-Davis d989afbf15 change outcomes alignment component
closes OUT-3593
flag=outcome_alignment_non_scoring_content

Test plan:
- with quiz_api, outcomes, canvas running,
  provision outcomes for account
  - in canvas rails console:
      Account.first.provision_outcomes
- in a course, create some outcomes and groups
- sync canvas outcomes to outcomes service
  - following instructions in outcomes-service canvas.rake
    re: canvas docker-compose config, run in outcomes-service:
      dc run --rm api bundle exec rake \
         canvas:dump_canvas_data[outcomes.docker,db.canvas.docker]
      dc run --rm api bundle exec rake canvas:sync[outcomes.docker,true]
- enable "Outcome alignment to non-scoring content" FF
- create canvas course with wiki page
- on wiki page show page, add outcomes to the page
- verify that outcomes are retained on reload
- in another course without outcomes, verify that outcomes widget does
  not appear

Change-Id: Ie3af07642d818eaa529bff76b1ac7d81e575622b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235665
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Reviewed-by: Pat Renner <prenner@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Augusto Callejas <acallejas@instructure.com>
Product-Review: Jody Sailor
2020-05-29 00:50:27 +00:00
Ed Schiebel 9d779b3d7f Update eslint rules to allow optional chaining
closes LA-973
flag=none

test plan:
  - code with a?.b does not report no-unused-expressions eslint error

Change-Id: If31b5545c31a9a095176cee74a2173ba0eeceab8
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235941
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
2020-05-07 12:38:29 +00:00
Charley Kline 2543084cc1 Add use-media-set responsive React hook to package.json
Refs USERS-549
flag=none

This will be used in places where responsive components
may have performance issues due to complexity.

Test plan:
* build passes

Change-Id: Icce432352b5eb5118fc258b7c2f0e3c730eaae86
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236255
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Pat Renner <prenner@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2020-05-06 15:59:14 +00:00
Derek Bender 1a5bb0a7e5 Point to instructure forks
Closes: CCI-351

flag = none

Test Plan:
- no behavioral changes
- build passes

Change-Id: I2e6bfa46b56ee2b59b8289fc90ef9c319757fc34
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235566
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2020-04-30 16:35:43 +00:00
Derek Bender 3d9bffdbfb Add ui-flex explicitly to package.json
Fixes: CCI-352

This resolves an issue with a plugin which includes it explicitly and
then changes the yarn.lock. This gets both package.json files in sync.

Test plan:
- yarn.lock does not change with or without plugins present

flag = none

Change-Id: I48452b2c542476b42cf1aae80605e267d0c62819
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235769
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2020-04-30 16:25:44 +00:00
Benjamin Christian Nelson 9a20868030 remove unused selinimum gem
Change-Id: I0adc219a6cab442226619d5bdd0814d7f09d0d52
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230713
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
Product-Review: Jacob Powell <spowell@instructure.com>
2020-04-23 17:25:57 +00:00
Ed Schiebel 9e73b30345 Update instui and media-capture versions, reprise
instui -> 6.24.0
@instructure/media-capture -> 7.1.0

the update to @instructure/media-capture is necessary to
fix the audio recording bug described in LA-859.  This change
required a bump to INSTUI's version. Both updates are rolled
into this change.

closes LA-595
flag=none

test plan:
For the audio recording part:
prereq: have notorious running. you must be loading canvas
from localhost unless using https in order to enable
the mic and webcam.
  - create or edit something with the rce
  - select Media > Upload/Record media
  - change to the Record tab
  - click on the "WebCam" button and select "No video"
  - record some audio and save
  > expect the audio to be uploaded and appear in the RCE

  - go to the speedgrader for a graded object
  - click on  the Media Comment button
  - click on the "WebCam" button and select "No video"
  - record some audio and save
  > expec the audio comment to be uploaded and playable

For the instui upgrade part:
  - make sure everything still works as expected
  - check with instui changelog for changes since 6.21 for guidance

This commit reverts commit 7ede798549,
which reverted 81d493b722
which was prematurely merged.

Reason for revert: get the oritinal patchset back in the queue,
but hold off merging until after beta is cut from master. This
will give the INSTUI change a chance to soak in dev for longer
than the weekend before being deployed

Change-Id: Iada67ee10a796e4b4b967b27a64f3e527e78249a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/233037
Reviewed-by: Charley Kline <ckline@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2020-04-21 17:44:46 +00:00
Ed Schiebel 7ede798549 Revert "Update instui and media-capture versions"
This reverts commit 81d493b722.

Reason for revert: <INSERT REASONING HERE>

Change-Id: I605acf8519f023c671e6bb52eb541434701bc52f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/233036
Tested-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2020-04-17 14:10:27 +00:00
Ed Schiebel 81d493b722 Update instui and media-capture versions
instui -> 6.24.0
@instructure/media-capture -> 7.1.0

the update to @instructure/media-capture is necessary to
fix the audio recording bug described in LA-859.  This change
required a bump to INSTUI's version. Both updates are rolled
into this change.

closes LA-595
flag=none

test plan:
For the audio recording part:
prereq: have notorious running. you must be loading canvas
from localhost unless using https in order to enable
the mic and webcam.
  - create or edit something with the rce
  - select Media > Upload/Record media
  - change to the Record tab
  - click on the "WebCam" button and select "No video"
  - record some audio and save
  > expect the audio to be uploaded and appear in the RCE

  - go to the speedgrader for a graded object
  - click on  the Media Comment button
  - click on the "WebCam" button and select "No video"
  - record some audio and save
  > expec the audio comment to be uploaded and playable

For the instui upgrade part:
  - make sure everything still works as expected
  - check with instui changelog for changes since 6.21 forguidance

Change-Id: I322b57f4addca16c989feeb9b74a1fc3f8c775e5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/234155
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2020-04-17 13:46:24 +00:00
jonw e9a47c91f6 add progress bar and errors to asmt bulk edit
closes LA-898
flag=assignment_bulk_edit

test plan:
- Edit many dates and save
- The job should start and a progress bar should be displayed next to
  the cancel button
- The job progress should be polled and the progress bar updated
- When the job completes, polling stops (see network tab), the progress
  bar should be at 100%, and a success message should be displayed.
- There should be appropriate screen reader announcements.
- If there are any errors during the job, polling should stop and the
  error messages should be displayed.

Change-Id: Ifd9ec6224318a003317a66ce2460ccf3e9d45efa
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/233136
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2020-04-10 16:35:19 +00:00
jonw d48344a5e1 add overrides and editing to bulk assignment edit
closes LA-847
flag=assignment_bulk_edit

test plan:
- Assignments and their overrides should be displayed with their dates
- Each date input should function and work independently

Change-Id: Ia2206bcae8b462535e3bcc99bf024bfaae39bc3e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230953
QA-Review: Anju Reddy <areddy@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
2020-04-06 21:36:14 +00:00
Derek Bender fef18b228a require node 10.16 for brotli support
Fixes: CCI-312
flag = none

Test Plan:
- builds pass

Change-Id: I419c5f8a2572195c3b81bf51c8028ceabb7df1bd
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/231945
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2020-04-03 19:48:37 +00:00
Derek Bender 2cdf77e112 Pin instui to ~6.21.0
Since instructure-ui has published version 6.22, any developer who runs
`yarn` will result in a modified `yarn.lock` file. To prevent accidental
upgrading from 6.21 to 6.22, it would be prudent to pin these
dependencies in the `package.json`. This also is a good idea to help
reduce any confusion around _why_ the yarn.lock is being changed locally
as well.

Fixes: CCI-302

Test plan:
- manually verify no changes to the `resolved` fields of each
  git-changed package. Since this pins all instui deps, they should all
  be exactly the same.
- manually verify there are no @instructure prefixed packages that are
  version 6.22

Change-Id: Id1c061bc60f1922d330cfafab00b4ddc9e09f9ab
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/232255
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
Reviewed-by: Benjamin Christian Nelson <bcnelson@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Jacob Powell <spowell@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2020-03-31 17:28:00 +00:00
jonw 0bf9b8df9d add CanvasDateInput and bulk edit test table
The thrust of this commit is to implement a CanvasDateInput on top of
instui's DateInput field. The bulk editing table is just an instance
of it to test with.

closes LA-835
flag=assignment_bulk_edit

test plan:
- go to the assignment bulk editing page
- play around with the single date input component
  - selecting dates from the calendar
  - typing in dates
  - typing invalid dates
  - blank line
  - keyboard navigation
  - screen reader
- play around with your user locales and timezones and expect correct
  behavior showing the proper dates

Note that VO reads the date twice when you navigate with the keyboard. I
believe this is because it is reading the input value change and the
selected calendar date. I don't know that there's much to do about this.
The demo on instui's page does the same thing.

Change-Id: I9c66ccaa746fb91fecd20362e00a927c57f491b5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230609
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
2020-03-31 03:52:27 +00:00
Charley Kline 4a3e308105 Add <Responsive> component from InstUI
Refs UXS-49
Refs USERS-459

It will be generally useful to be able to use the InstUI
Responsive component to deal with browser breakpoints in
React. The immediate use case is something I'm working on
in multiple-root-accounts but it needs to be in core
Canvas.

Test Plan:
* You agree that the changes here, especially what happened
  to yarn.lock, are kosher.

Change-Id: Icad7db3de7fef94dd1eb292b02b30014a0facbd4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/232023
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Chris Hart <chart@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2020-03-30 15:34:01 +00:00
Alex Anderson 66cd0c07f0 Add Teacher Tourpoints
Uses the "Product Tour" feature flag to selectively load
the bundle. It also grabs the user's role to only show
the tour to teachers. Admin and Student tours coming
soon.

To properly facilitate communication between the Navigation
component and the Tour component, I created a
simple PubSub engine which allows components to pass
messages between each other in an efficient and clean way.
This allows the tour to open the nav trays at certain
points in the tour.

Whether the tour shows is determined by a localStorage
key, set on the users browser. When they close the tour
if turns the flag on and uses that to now automatically
show the tour again.
The key is "canvas-tourpoints-shown-teacher"

This patchset also includes an update to the help links.
If the user is a teacher, it shows the "Show Welcome Tour"
link, allowing the tour to be re-opened from the help tray.

Test Plan:
Log into Canvas as a teacher
The tour should appear. Navigating through the tour properly
opens and highlights items in the navigation trays.
Reloading the page after closing the tour completely should
cause the tour not to appear. Removing the localstorage
key should cause the tour to reappear.

It should look like the designs linked below.
https://www.figma.com/file/BzfJcEbBaccu5lMsaZ08zK/Canvas-COVID19-Tourpoints?node-id=8%3A33

Refs UXS-22

Change-Id: I1164bc1fbe55fa5cbb5f4a9df271a0dcd772f045
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230614
QA-Review: Daniel Sasaki <dsasaki@instructure.com>
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Laura Leavitt <lleavitt@instructure.com>
2020-03-27 16:36:59 +00:00
Chris Hart 2eb072efe1 Update new user tutorial tray content
flag=none
closes UXS-8

Adds new content (copy and links to Canvas Guides), as well as
updated images for each of the existing new user tutorial trays.

Test Plan:
Verify that the trays work as follows:
- All links should correctly resolve to the Canvas Guides page
  they name
- All trays should feature a Panda image
- All tray should open and close, and should be able to be
  dismissed permanently (no regressions from existing functionality)

Check the following index pages for trays: Announcements, Assignments,
Collaborations, Conferences, Discussions, Grades, Course Home Page,
Course Import page (under Settings), Modules, Pages, People, Quizzes,
Settings, Syllabus. There is a tray for Files, but it seems to be removed
from the Files index page on page load (not a result of this commit).

Change-Id: I873fdf9ceb6097d987f3e7da38e5fd615c1d98ea
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230372
QA-Review: David Tan <dtan@instructure.com>
Reviewed-by: Pam Hiett <phiett@instructure.com>
Product-Review: Pam Hiett <phiett@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2020-03-21 08:53:38 +00:00
August Thornton 403b13a4f8 run jest tests concurrently
closes USERS-376
fixes USERS-379
fixes USERS-385

test plan:
 - specs pass

Change-Id: I30d4c27a2c628858a207d4c0236345bad49b7bcf
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/228278
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2020-03-10 21:38:24 +00:00
Charley Kline b897df4336 Update INST-UI to v6.21
Closes USERS-336
flag=none

Test plan:
* should be wrung out in beta
* can someone please test the CanvasMediaPlayer in the RCE?
  I saw some weirdness there and had to skip a test.

Change-Id: I1663466aa411fc5e98e2a5e4f7384eb151364817
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/228277
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
QA-Review: August Thornton <august@instructure.com>
2020-03-05 01:48:56 +00:00
Augusto Callejas 8f537e3594 Enable outcome alignment on Canvas pages
closes OUT-3401

flag = none

test plan:
  - check out/update canvas plugins needed for sharding:
    * multiple_root_accounts
    * demo_site
    * canvas_geoip
  - check out/update canvas plugin needed for provisioning:
    * uuid_provisioner
  - check out/update quiz repo:
    * quiz_api
  - check out/update outcomes service:
    * outcomes-service
  - add the following to the postgres container section
    of your docker-compose.override.yml in canvas:
    ===
    ports:
      - "5432:5432"
    environment:
      VIRTUAL_HOST: db.canvas.docker
    ===
  - update canvas configuration by adding example
    dynamic_settings to existing config/dynamic_settings.yml
    and by copying example uuid_provisioner.yml
  - in canvas rails console, enable the auto provision setting:
    > Setting.set('auto_provision_outcomes_service', 'true')
  - start up canvas, outcomes-service and quiz_api
  - create a new root account from canvas siteadmin
    http://canvas.docker/accounts/site_admin/root_accounts:
    * account name: outcomes
    * account domain: outcomes.canvas.docker
  - after a few minutes, verify in the outcomes rails console that a new
    shard has been created and registered for the second account, but
    not the first
    > ap AccountRegistry.all
  - create a course with outcomes in outcomes.canvas.docker
  - in the outcomes api docker container, dump canvas data and sync
    into the provisioned outcomes shard:
    > bundle exec rake canvas:dump_canvas_data[outcomes.outcomes.docker]
    > bundle exec rake canvas:sync[outcomes.outcomes.docker,true]
  - enable the outcome alignment feature flag:
    - http://canvas.docker/accounts/site_admin/settings
    - Feature Options tab
    - Find "Outcome alignment to non-scoring content" feature flag
    - Switch to "ON"
  - return to course created in new canvas account
  - create a canvas page in the course
  - load the newly created canvas page
  - confirm that an outcome alignment widget appears, and that
    it opens a side tray with course outcomes  when attempting to align

Change-Id: Ide6891493ea3c926d155d4aea9bc7aff5bdaa6fb
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/227463
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
Reviewed-by: Pat Renner <prenner@instructure.com>
QA-Review: Michael Brewer-Davis <mbd@instructure.com>
Product-Review: Michael Brewer-Davis <mbd@instructure.com>
2020-02-21 16:28:03 +00:00
Davis Hyer 74714095be add confetti when assignment is submitted
refs KNO-265
flag=confetti_for_assignments

Moving Steven's POC (https://gerrit.instructure.com/c/canvas-lms/+/224811)
to the original assignments implementation.

A followup commit will introduce the screenreader text as this commit
is already getting large, and there has been a few difficulties on
adding that behavior already.

test plan:
  - with confetti_for_assignments flag disabled
    - turn in a submission for an assignment before the due date
      - you should be redirected to /courses/:id/assignments/:id
        - no confetti should display
      - visit /courses/:id/assignments/:id?confetti=true
        - no confetti should display
  - with confetti_for_assignments flag enabled
    - turn in a submission for an assignment before the due date
      - you should be redirected to /courses/:id/assignments/:id?confetti=true
        - confetti should display
    - turn in a submission for an assignment after the due date
      - you should be redirected to /courses/:id/assignments/:id
        - no confetti should display
  - while confetti is displayed
    - you should be able to clear by pressing either `space` or `esc`
    - confetti should clear itself after 3 seconds

qa risk: low

Change-Id: Ie7743af9e2341eab26fbc3055e90bb0658463018
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/225929
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Johnny Le <jle@instructure.com>
Product-Review: Johnny Le <jle@instructure.com>
QA-Review: Johnny Le <jle@instructure.com>
2020-02-19 15:35:29 +00:00
Rex Fleischer 01165c1db3 spec: testing changes for js failures
Change-Id: I7b20ca53f0defdc78ffd285540e62d1b2bf51b86
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/223373
Tested-by: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Rex Fleischer <rfleischer@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
2020-01-15 22:18:14 +00:00
Charley Kline dcaf1fd4b6 Upgrade INST-UI dependencies to latest (6.16.0)
Closes USERS-205
flag=none

Also had to make a slight tweak to a Canvas Planner file to reflect
a change in ui-forms -> ui-checkbox

In addition, several imports from InstUI had to be changed from
their legacy locations to their currently-documented ones, in
order for all the tests to pass. Using the old import sources
apparently causes two components of the same name to be rendered
which breaks assumptions in some tests that there will be only one.

Eventually we'll have to fix up all the imports which will be a
bit of a slog.

INST-UI changes notes for 6.16.0:
---------------------------------

Bug Fixes:

ui-a11y-utils: fix ui-a11y-utils dependencies
ui-docs-client:
    remove unnecessary import of ScreenReaderContent
ui-modal: update deprecated lifecycles in modal
ui-tooltip: uncontrolled example broken

Features:

instui-cli,ui-scripts,ui-template-scripts:
    add a new ui-template-scripts package
instui-cli,ui-upgrade-scripts:
    add a new ui-upgrade-scripts package
ui-badge: add ui-badge package
ui-buttons: add a CondensedButton component
ui-buttons: add an IconButton component
ui-byline,ui-layout: add ui-byline package
ui-checkbox: add ui-checkbox package
ui-docs-client:
    make content within docs pages navigable via linking
ui-docs-client: updates to compileMarkdown for id generation
ui-drawer-layout: add ui-drawer-layout package
ui-elements: add isWithinText prop to ui-element Link
ui-elements,ui-truncate-text: add ui-truncate-text package
ui-expandable: add ui-expandable package
ui-forms,ui-radio-input: add ui-radio-input package
ui-forms,ui-text-area: add ui-text-area package
ui-navigation: remove experimental pill from AppNav
ui-range-input: ui-range-input package
ui-responsive: add ui-responsive package
ui-spinner: ui-spinner and design updates
ui-themeable: update deprecated lifecycles in themeable
ui-tray: ui-tray package

Test plan:
* Review changelog above
* Test on master thoroughly.

Change-Id: I9f4552f18b2a48a626e7bb2102f8b3def46eb775
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/221466
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Steve Shepherd <sshepherd@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
2020-01-15 18:22:03 +00:00
S. Jacob Powell 85fe2246e9 Ensure all JS stages output test results
test plan:
See the following link for examples of failing in each stage,
as well as the test output being correctly loaded into
the Tests tab:
https://jenkins.inst-ci.net/blue/organizations/jenkins/Canvas%2Ftest-suites%2FJS/detail/JS/5082/pipeline

fixes: CCI-178

flag = none

Change-Id: I43c16ce7b589eb69cbe266c0929a722325ece2cf
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/222604
Reviewed-by: Derek Bender <djbender@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
Product-Review: Jacob Powell <spowell@instructure.com>
2020-01-15 06:01:08 +00:00
Charley Kline e8db468fdd Update InstUI imports for canvas planner
Refs USERS-205
flag=none

The InstUI folks are splitting up packages so to allay
future compatibility problems, and to get tests to pass
on future upgrades of InstUI, we should follow these as
they move rather than rely on the old locations. This
takes care of the Canvas Planner package.

Note that I cheated a bit here and brought CanvasSelect
over from the main Canvas app into this package. At
some point that should probably become a package of its
own, I guess.

And I had to add another test file because the tests
for CanvasSelect dragged the test coverage below 85%.
Sigh.

Test plan:
* tests pass
* canvas planner works

Change-Id: I40bbbe559f4928318b8ac1444649d97b09a281c0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/221741
Product-Review: Charley Kline <ckline@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
2020-01-07 19:14:21 +00:00
Mysti Lilla 7ea5d98f47 Announce when items are loaded
fixes LA-292
flag=direct_share

Test plan
- Load the content shares and ensure the
  SR announces the load

Change-Id: I828c4ad23d5ebaf0879a7e3df56d2584b715c508
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/220774
Tested-by: Jenkins
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Jon Willesen <jonw+gerrit@instructure.com>
Product-Review: Anju Reddy <areddy@instructure.com>
2019-12-18 23:02:33 +00:00
Ed Schiebel 8746eef1ff Fix course image dnd
closes LA-95
flag=none

test plan:
  - go to any course settings page
  - click "Choose Image"
  - drag an image file into the drop area
  > expect a spinner while it uploads
  > expect the image chooser modal to close
  > expect the image to show as the course image

  - repeat, but try to drop an image outside the drop area
  > expect nothing to happen

  - repeat, but try to drop a non-image file into the
    drop area
  > expect it to be rejected and the message
    "File must be an image"

Change-Id: I7c94a02090b2b806610637d6329cf301ca1d5237
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/220548
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
Reviewed-by: Carl Kibler <ckibler@instructure.com>
QA-Review: Carl Kibler <ckibler@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-12-16 13:39:54 +00:00
Ryan Shaw 202f0b80a3 Print a helpful message in yarn webpack:analyze
Change-Id: I7d73e8d482dc025d478597393c261b9807dae544
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/220599
Reviewed-by: KC Naegle <knaegle@instructure.com>
Tested-by: Jenkins
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-12-13 16:13:55 +00:00
Mysti Lilla 3849cfad1c Prevent 404 error in Direct Share tray
fixes LA-325
flag=direct_share

Test plan
- In the direct share import tray
  select a course and then a module
  for that course
- Then search for a different course
  and select one from the searched list
- Verify that you don't get the "something
  went wrong" picture

Change-Id: I70b7614da7d9003c76bf3ebe3ff1290e4de98575
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/219207
Tested-by: Jenkins
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Carl Kibler <ckibler@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
2019-12-10 00:15:54 +00:00
Ryan Shaw ecfa985af1 Revert "Perf: use a minimal version of tinycolor2"
Closes: TALLY-318

This reverts commit 1db3924086.

Change-Id: Id59d17728734fc150bd3295684937fd88c9ae0a4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/218038
Reviewed-by: Spencer Olson <solson@instructure.com>
QA-Review: Spencer Olson <solson@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Tested-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
2019-11-20 21:36:10 +00:00
Ryan Norton 7051c0aa74 fix deprecated ellipsis warnings in A2
this fixes the following error that is showing up in the console
when using student view:

Warning: [Heading] `ellipsis` is deprecated and will be removed in
version 7.0.0. Use `<TruncateText />

Test Plan:
* when using A2, go to an assignment page and confirm that the
  warning is no longer showing

flag=assignments_2_student
fixes WOKE-90

Change-Id: I9fea740c04d9b4029d01a688a8b2f98c94d3fd8b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/215964
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-11-05 22:42:37 +00:00
Ryan Shaw 1db3924086 Perf: use a minimal version of tinycolor2
closes: COREFE-389

This version of tiny color has only what we need to provide the APIs
exposed by @instructure/ui-color-utils
Before: 15k, after 5k

See the difference
https://bundlephobia.com/result?p=@instructure/tinycolor2
Vs
https://bundlephobia.com/result?p=tinycolor2

Here’s the actual changes of what was removed:
https://github.com/instructure/TinyColor/commit/350479a

Change-Id: I591652bf95f2c1667f17da5c94b4e60df6fba0d5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/214768
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-11-01 21:00:38 +00:00
Brent Burgoyne 802645337e update timezone library for brazil dst change
temporarily using a fork of bigeasy/timezone since it does not build
with the latest releases of eggert/tz

fixes COREFE-308

test plan:
- set user timezone to brazilia
- create an assignment with a due date after 2019-11-03
- save the assignment
- the time should not be off by an hour on the details page

Change-Id: I7a15e92def90a5d83f8be079657a58894bd13822
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/215065
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-10-30 16:12:28 +00:00
Ed Schiebel 67e551c5e5 Add video options tray to the rce
closes COREFE-315

test plan:
  - load a page with the RCE and have a video in it
  - click on the video
  > expect the Options popup toolbar button
  - click it
  > expect the video options tray to open
  > expect the title to default to the video's file name
  > expect the default size to be Large (400px on the long side)
  - delete the title
  > expect the Done button to be disabled
  - set a new title
  - change the size to Custom
  - delete the width or height
  > expect an error message and the Done button to
    be disabled
  - enter a new size, or select one from the dropdown
  - click Done
  > expect the video to be resized to the new size
  - if you're using a screenreader, expect the video
    to be announced as "Video player for {your title}"

Change-Id: Id7e29520cc91c02645b92d666216e64f6619bbbb
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/211355
Product-Review: Lauren Williams <lcwilliams@instructure.com>
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
2019-10-30 13:14:42 +00:00
Jeremy Stanley cac818a878 files: turn off page.js click handler
because it prevents preventDefault on file links (sometimes)

then use it explicitly where we need it, on the left/right
preview buttons

test plan:
 - go to user files (/files)
 - have multiple image files in a folder
 - reload the page, then click an image file
 - it should preview, not download
 - clicking the left/right arrows at the
   side of the preview window should go to the
   previous/next image without reloading the page

fixes ADMIN-2923

Change-Id: Ib97d25d51e7c94fb962e5d24d3c763554e7fcdd4
Reviewed-on: https://gerrit.instructure.com/212876
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Carl Kibler <ckibler@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2019-10-17 20:47:47 +00:00
Clay Diffrient 5e5448f7aa Add ability to launch immersive reader from wiki pages
Test Plan:
  - Enable Immersive Reader Feature flag
  - Go to a wiki page with content
  - Click the immersive reader button
  - Immersive reader should open

closes COREFE-265

flag = immersive_reader_wiki_pages

Change-Id: I015fbbd72adf05177f3941890b5a04a7aa067ee2
Reviewed-on: https://gerrit.instructure.com/211546
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
2019-10-11 21:24:10 +00:00
Ed Schiebel d5a80a41a9 Update media upload
closes COREFE-268

test plan:
  - open a page with the rce
  - from the media toolbar button menu, select upload
  - pick a video from your computer
  > expect a preview to appear
    > expect the video to be about 75% the width of the modal
      and as tall as it needs to be for the video
  - click Submit
  > expect the modal to close
  > expect the video to show up in the rce
    > expect it to be 400px wide, and however tall it needs
      to be (try both portrait and landscape videos)
    > expect the grey placeholder while it's being uploaded
    > expect the yellow flash indicator when it's loaded
    > expect to see a "Loading..." message until the video player
      renders
  - from the documents toolbar button menu, select upload
    and upload a video
  > expect the video file to show up in the media>course media
    tray list
  - click on the video file
  > expect the video to show up in the rce
    > and for all the same constraints as the uploaded
      video to be true

  - you should try this with the video appended to the end of
    content and right in the middle
  - click on a video and delete.

  - if you loaded the page via http, there will probably be
    no fullscreen button

Change-Id: I934ad486b74689e81941e1fcf0cf6efd18e5f426
Reviewed-on: https://gerrit.instructure.com/209296
Tested-by: Jenkins
Product-Review: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
2019-09-30 14:13:50 +00:00
Ryan Shaw 48c055ed0e Now that we have streaming, execute JS sooner
Closes: COREFE-302

This will actually start executing the JS as soon as it comes in
the <head> instead of waiting until after the </html> for it to start.

What this means is that for any page that is streamed, we will start
running our javascript sooner, as soon as the <head> is sent to the
browser. So we can begin executing code while the server is still
working on sending back the rest of the document.

Note: this change makes it necessary for any endpoint that is streamed
to have a check for DOMContentLoaded before doing anything that assumes
elements will be there. I added this `@instructure/ready` helper do to 
that in all the places I could see. If the DOM is already loaded,
`@instructure/ready` run the callback immediately (not in a setTimeout) 
so theoretically load/execution order should be _exactly_ the same for 
any response that is not streamed, even if it is wrapped 
in a “ready(…)” callback

QA test plan:
* click around in prod mode, especially on pages that are streamed
  make sure there are no thrown javascript errors or pages that
  fail to render
* try both on a fast network as well as simulating a slow network with
  browser caching turned off (if you don’t know how to change your
  network speed simulation settings in Chrome, I can show you)
* specifically look at pages that are streamed 
  (like courses/x/discussions/y, /courses, courses/x/modules) 

Change-Id: I49a74ab480095e50cfa08dca8e074848dce12012
Reviewed-on: https://gerrit.instructure.com/203198
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-09-19 23:10:43 +00:00
Ryan Shaw 857e37a73f allow prettier for ruby too
This does not mandate anything or -1 or anything like that, it just
makes it so if you hate figuring out how to format ruby code like I do
you can have prettier do it for you.

Test plan:
* First checkout this commit & run yarn and make sure you are using
  Ruby 2.5 or newer

To test on command line:
* `yarn prettier --write path/to/any/ruby/file.rb`

To test in vscode:
* After you checked out this commit and ran yarn, restart vscode
* Open a ruby file in vscode
* open the command pallet (command-shift+p)
* type “Format” so the “Format Document” command appears. Hit enter
* it should pretter format that ruby file

* or alternatively, trigger the “Format Document” command directly
  By typing “Shift+Alt+F”

Change-Id: Ifd0272f2c1bed3263473a1e7d5df13547e10dec4
Reviewed-on: https://gerrit.instructure.com/209982
Tested-by: Jenkins
Reviewed-by: Cameron Matheson <cameron@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-09-18 19:24:43 +00:00
Jon Willesen 3f8f0fcf48 direct share user selection modal
closes ADMIN-2839
flag=direct_share

test plan:
- as a user with course management permissions (such as a teacher) go to
  the discussions index page and select "Send To..." from a discussion's
  kabob menu.
- this should open a modal where you can search for and select other
  course users who have course management permissions.
- clicking on the "Send" button only does a console log at the moment.

Change-Id: I67f823d0820283fd90e2aa6e3ae3ea5fe54d9b3d
Reviewed-on: https://gerrit.instructure.com/205967
Tested-by: Jenkins
Reviewed-by: Carl Kibler <ckibler@instructure.com>
QA-Review: Carl Kibler <ckibler@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-09-17 19:20:57 +00:00
Landon Gilbert-Bland 8596433ff7 Add support for javascript optional chaining
Per https://github.com/tc39/proposal-optional-chaining

Test Plan:
  - Jenkins passes

flag = none

Change-Id: I7b9fde7e91a9bd00a85397bcf791b8eccd528a5b
Reviewed-on: https://gerrit.instructure.com/209826
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-09-17 17:33:46 +00:00
Ryan Shaw 566ecb6e9f Spec: fix jest timeouts on patchset/master bulds
Closes:  COREFE-293 COREFE-294

See:
https://til.hashrocket.com/posts/s9bzmmvbbz-fix-timeouts-and-speed-up-jest-on-ci
https://stackoverflow.com/questions/43864793/why-does-jest-runinband-speed-up-tests/44506948
For why

Test plan:
We should get less test timeouts on jest from the master build once this
Is merged

Change-Id: I74905cbd50ee0ea1c5e9e2cbcf563a5e0eb28721
Reviewed-on: https://gerrit.instructure.com/208975
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-09-11 17:14:02 +00:00
Ryan Shaw 20b962f5f5 Use native es modules for tinymce-a11y-checker
Change-Id: Ia17a47e50711abca1b6ca154995bfa2f6e5b1eb8
Reviewed-on: https://gerrit.instructure.com/208604
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-09-09 20:07:28 +00:00
Ryan Shaw f0d6f1a497 Remove rest of the $.support checks for old browsers
see: https://github.com/ryankshaw/jquery/commit/ce59a7f0b3c4fc6ff9a2176
for the diff of the actual changes

Copying from that commit message:

All of these checks only ever returned false in older browsers that
We no longer support. By getting rid of them, we can get rid of this
Chunk of javascript execution that happens on every page right before
The domcontentloaded event fires: https://cl.ly/d368d5c9388 which ends
Up being non-trivial because it causes a couple recalculate-styles
(As seen by the purple in that screenshot)

Test plan:
jQuery should work the same as before
* domcontentloaded should end 15-200ms sooner which means all pages
  Should load a little faster

Change-Id: I3efa8752708b9043107e9123d31cd509536e9993
Reviewed-on: https://gerrit.instructure.com/208606
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-09-09 17:19:47 +00:00
Jon Willesen 3fceef17cb basic direct share course selection tray
Note: There appears to be an issue with VoiceOver not announcing the
aria live updates. Going to ignore this for now and see if it is still a
problem when InstUI 6 lands. Another ticket will be created to check and
fix.

refs ADMIN-2811
flag=direct_share

test plan:
- should be able to search by name for courses you manage in the direct
  share course selection tray.
- copy button disabled until you select a course
- after selecting a course, the copy button just logs to the console
- cancel button closes the tray
- generally accessible, except for VO reading alerts.
  - could check the flash_screenreader_holder div in the inspector if
    you want to watch the DOM changes that should trigger the alert.

Change-Id: I5c102b25d277204a9929f780adbe94b9d3e46bcb
Reviewed-on: https://gerrit.instructure.com/205371
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
Reviewed-by: Carl Kibler <ckibler@instructure.com>
2019-09-06 20:58:59 +00:00
Clay Diffrient 8247f43008 Add linters to new Jenkins
This moves eslint, stylelint, and xsslint to be part of our
JS build pipeline.  It does not account for other linters that
are more general like tatl_tael linters and commit messages or
non-frontend language specific linters like rubocop.

Test Plan:
  - The linters-and-js build on New Jenkins should run and actually
    run the linters specified above.

closes COREFE-220

flag = none

Change-Id: I8f633caf9af025c83bbe68fbd1536276a838c159
Reviewed-on: https://gerrit.instructure.com/206106
Tested-by: Jenkins
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-09-03 19:18:30 +00:00
Ryan Shaw 926699be29 Isolate grade* specs from everything else
Trying to get the karma tests to have less flaky failures,
let’s see if running all the gradebook related specs isolated from
everything else helps solve anything


Test plan:
* the karma part of linters and js build passes

Change-Id: I2f25464129f71c019fe27267d1b0cfa5472a6481
Reviewed-on: https://gerrit.instructure.com/207700
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-30 20:13:21 +00:00
Ryan Shaw 3718da12c5 Upgrade canvas-lms proper to instUI 6
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>
2019-08-30 14:36:53 +00:00
Ryan Shaw 9b156aa314 add @instructure/ui-a11y to our package.json
…since we use it.

This way, once I start upgrading other things to instUI 6, it won’t 
Break by giving canvas-lms proper ui-a11y 6.x instead of 5.x

Test plan:
* if this is merged, the commit to update MRA to instUI 6 g/207102
  should pass

Change-Id: I30d1cce751635fb861feba12ea9649901887ebb9
Reviewed-on: https://gerrit.instructure.com/207135
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-28 22:48:46 +00:00
Ryan Shaw d1bc046578 Upgrade canvas-rce to 4.1.5
The only change is that some things that it actually used weren’t
In it’s package.json and they were added.

See 
https://diff.intrinsic.com/@instructure/canvas-rce-old/4.1.4/4.1.5

For the differences

Test plan:
* when we upgrade canvas’s instUI to 6.x we shouldn’t get failures
  about not being able to find 
  @instructure/ui-alerts/lib/packages/alert.js

Change-Id: Icff6d120bff55697defc73c092b2ca9782fc44e2
Reviewed-on: https://gerrit.instructure.com/207063
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-28 21:22:24 +00:00
Ryan Shaw 9668da881d silence some yarn warnings caused by Apollo stuff
Test plan:
* run `yarn`
* you should not see these warnings:
warning " > react-apollo@3.0.1" has unmet peer dependency "@types/react@^16.8.0".
warning "react-apollo > @apollo/react-common@3.0.1" has unmet peer dependency "@types/react@^16.8.0".
warning "react-apollo > @apollo/react-common@3.0.1" has unmet peer dependency "apollo-utilities@^1.3.2".
warning "react-apollo > @apollo/react-components@3.0.1" has unmet peer dependency "@types/react@^16.8.0".
warning "react-apollo > @apollo/react-components@3.0.1" has unmet peer dependency "apollo-cache@^1.3.2".
warning "react-apollo > @apollo/react-components@3.0.1" has unmet peer dependency "apollo-utilities@^1.3.2".
warning "react-apollo > @apollo/react-hoc@3.0.1" has unmet peer dependency "@types/react@^16.8.0".
warning "react-apollo > @apollo/react-hooks@3.0.1" has unmet peer dependency "@types/react@^16.8.0".
warning " > @apollo/react-testing@3.0.1" has unmet peer dependency "apollo-utilities@^1.3.2".

Change-Id: Icd38c4e742b00d3f31fe187b1bc915fd01169880
Reviewed-on: https://gerrit.instructure.com/207064
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Cameron Matheson <cameron@instructure.com>
2019-08-28 21:17:01 +00:00
Ryan Shaw e782fb7012 filter non-actionable console logs everywhere else too
I did this first for canvas’s jest tests, but this does it for
karma/qUnit, canvas-rce, canvas-planner and dev mode too.

test plan:
* run `yarn test`
* you should see a lot less react deprecation messages

Change-Id: I5f5cee08d705b749526be87fd79cfc937c015145
Reviewed-on: https://gerrit.instructure.com/206879
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-27 19:54:09 +00:00
Cameron Matheson 883c6d8925 upgrade graphiql
Test plan: graphiql works

flag = none

Change-Id: Ia8bd7100024cab45746a27f370d5423e6c5fa9e6
Reviewed-on: https://gerrit.instructure.com/206853
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-27 15:26:45 +00:00
Ryan Shaw 9d54094803 upgrade @testing-library npm deps
Change-Id: I5438f3895173d4b2b417835c6ac937dc65d160d3
Reviewed-on: https://gerrit.instructure.com/205774
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-27 14:49:48 +00:00
Ryan Shaw 78d5f6094f attempt #2 to try to get master js build working
my last thing fixed it in one spot but it fails in another now

lets see if we just give it more memory if that will work

Change-Id: Ia4a5aef21f3a07ac2d383682de1cfc4fe2d71f73
Reviewed-on: https://gerrit.instructure.com/206869
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-27 00:47:39 +00:00
Ben Nelson ff2055d08e upgrade react-apollo to 3.x.x
closes COMMS-2316

TEST PLAN
-------------------------------
all tests pass

Change-Id: I0c270bb7a8d5dfa166641648841e619a1a21c0f4
Reviewed-on: https://gerrit.instructure.com/206348
Reviewed-by: Matthew Lemon <mlemon@instructure.com>
Tested-by: Jenkins
QA-Review: Ben Nelson <bnelson@instructure.com>
Product-Review: Ben Nelson <bnelson@instructure.com>
2019-08-26 23:28:25 +00:00
Ryan Shaw 60e8c8bbdd Clean up yarn.lock
If you ran yarn on master it would create a dirty yarn.lock

Test plan:
* after this is applied, if you run `yarn` it should not make any
  Changes to yarn.lock

Change-Id: I0303e6e9ca0032771b95497df4b39a3e26e2eed3
Reviewed-on: https://gerrit.instructure.com/206700
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-26 16:31:11 +00:00
Ryan Shaw e91e2340fe upgrade React to 16.9.0
note: this will start logging a lot of deprecation warnings from
React about stuff like componentWillMount and componentWillReceiveProps.
Teams should update their code to not use those things so those
Deprecations go away

Test plan:
* automated builds should pass

Change-Id: I42a340dacdb43d410c7246945c025e0eb83220fa
Reviewed-on: https://gerrit.instructure.com/205772
Reviewed-by: Ryan Norton <rnorton@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-21 23:40:32 +00:00
Ryan Shaw d2a9d5eba7 upgrade immer and immutability-helper npm deps
here are 2->3 changes from immutability-helper
Huge thanks to @jedmao for converting the library to typescript!
New: TypeScript definitions are now generated from TypeScript source. 
meaning they will always be 100% in sync w/ the source code.
New: exported Context class.
Deprecated: stop using const myUpdate = newContext().update and start 
using const myContext = new Context(); myContext.update(...).
Deprecated: stop using update.extend and start using import { extend } 
from 'immutability-helper' or const { extend } = new Context().


test plan:
* the only thing that uses immer is the assignments_2 teacher stuff,
  that should still work
* discussions, gradingPeriods, and the CreateOrUpdateUserModal use
  immutability-helper, those should still all work

Change-Id: If6b62788be5d3929b5a0ddd64e1b63aa09916b84
Reviewed-on: https://gerrit.instructure.com/205773
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-21 16:12:52 +00:00
Ed Schiebel 1b1631c694 Add @instructure/uid dependency to canvas
test plan:
  yarn test:karma builds w/o errors

Change-Id: I631dabdf9214e2d44bedaa4f4ff1451fcc0e76b0
Reviewed-on: https://gerrit.instructure.com/206016
Reviewed-by: Carl Kibler <ckibler@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Carl Kibler <ckibler@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
2019-08-21 16:08:30 +00:00
Ryan Shaw f4e36a93d6 upgrade some NPM dependencies
Change-Id: If2a90959713e292a46c9d5e9c75c89a37f7316b6
Reviewed-on: https://gerrit.instructure.com/205007
Tested-by: Jenkins
Reviewed-by: Cameron Matheson <cameron@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-20 18:30:44 +00:00
Jon Willesen bd060bc291 start of direct share course selection tray
This includes some general utilities

Note: There is a bug in the instui Tray that mounts the contents of the
Tray twice, which results in multiple fetches for the managed courses.
We're going to ignore this for now since the right fix is to fix Tray
and not work around it.

flag=direct_share
refs ADMIN-2811

test plan:
- On the discussions index page, click on the kabob menu for a
  discussion and choose "Copy To...".
- A tray should open and load a list of the courses you are allowed to
  manage. There is no other functionality in the tray yet.

Change-Id: Ic0f5e841f61cd3cdaef7b681db2907089c561665
Reviewed-on: https://gerrit.instructure.com/204331
Tested-by: Jenkins
QA-Review: Carl Kibler <ckibler@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
2019-08-20 16:05:09 +00:00
Ryan Shaw c5f62b811b Upgrade @instructure/media-capture and media-player
Test plan:
* use the media capture stuff from the new RCE
* it should look the same but use instUI 6 components

Change-Id: If5e41b75652898c0d2a4d51eedb4fc437d68f7d2
Reviewed-on: https://gerrit.instructure.com/205695
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-20 14:43:06 +00:00
Ryan Shaw bf446dd05f Now that i18nliner can understand it, turn back on fragments
The previous commit makes it so i18nliner can understand <> instead of
<React.Fragment>, so this turns back on the eslint rule we had to turn
Off

Test plan:
* run bin/rake i18n:generate_js (or let the Jenkins builds run)
* it should pass

Change-Id: Ia3204cd6c3147eb52ca612adbb3b20b2df8c6921
Reviewed-on: https://gerrit.instructure.com/205378
Tested-by: Jenkins
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-20 14:06:41 +00:00
Ryan Shaw 1d199b5e2f upgrade eslint & don’t use unique one in canvas-rce
instead of having our own eslint in canvas-rce, and maintaining all
future rules like react hooks and stuff we can just use the same one
that the rest of the repo uses.

test plan:
* cd packages/canvas-rce
* `yarn lint` should run

Change-Id: Idbe8af533f7a19035d1998538d2d6fd1a711f164
Reviewed-on: https://gerrit.instructure.com/204998
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2019-08-15 17:17:30 +00:00
Cameron Matheson 40b5c13a29 minor apollo update: take 2
Test plan:
  specs pass

flag = none

Change-Id: I8e816e4ff46148b586037aa2b6eb36b9e50a958f
Reviewed-on: https://gerrit.instructure.com/205109
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-14 22:13:15 +00:00
Ryan Shaw ebaf3a0951 Revert "minor apollo update"
whoops, I didn't notice that this was dependent on something
that is not merged yet. I had some stuff that depended on this
so I too-eargly merged it. I'll revert it until we get the
validated apollo stuff figured out

This reverts commit 27b6085218.

Change-Id: Ib6439daa8f26663ecd473bb4bb71f8dda2231eec
Reviewed-on: https://gerrit.instructure.com/205000
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Tested-by: Jenkins
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
2019-08-14 13:43:55 +00:00
Cameron Matheson 27b6085218 minor apollo update
we need to get on an up to date version, but this at least fixes some
bugs i was running into while writing specs for GQL-60

Test plan:
  * pages using graphql still work (assignments2, gradebook, context
    cards)

flag = none

Change-Id: I4b384c3724fc843132c9db34f044cd88aba227bb
Reviewed-on: https://gerrit.instructure.com/204276
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-14 01:38:07 +00:00
Ed Schiebel 6ccad53796 return focus to the status bar buttons
when the kb shortcut dialog or the a11y checker tray close,
return focus to the button that opened it.

closes COREFE-108

test plan:
  - in rce, click on the kb short cutton in the status bar
  - close the kb shortcut dialog
  > expect focus to return to the button
  - repeat for the a11y checker
  - tab until the show-on-focus kb shortcut button above the RCE
    appears, click it, then close the dialog
  > expect focus to return to the button

Change-Id: I27ea79930e643d9908a784fbcb89900918d3be01
Reviewed-on: https://gerrit.instructure.com/204283
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-08-13 16:06:49 +00:00
Ryan Shaw 34f9a944f3 Don’t include regenerator-runtime on account settings
`axios-cache-adapter`’s “browser” field in package.json says to use
A “dist” file that is prebuilt with webpack to handle old browsers
(github.com/RasCarlito/axios-cache-adapter/blob/master/dist/cache.js)
That means it has a copy of `regenerator-runtime` in it for the async
functions it uses. That is wasteful and is bytes that our users 
shouldn’t need to download.

Test plan:
* the CSP stuff on the account settings page should work the same
* but the webpack js bundle should be smaller

Change-Id: I671f2eb60b57c43e002b9a62fd92feb5c96cd00b
Reviewed-on: https://gerrit.instructure.com/204252
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-09 16:57:43 +00:00
Ryan Shaw 644e5bb4f1 rename canvas-supported-browsers to browserslist-config-canvas-lms
this is to get it to work with how browserslist/autoprefixer/babel/
@instructure/ui-babel-preset expect things to work.

We had to change the name because 
https://github.com/browserslist/browserslist#shareable-configs
Says:
For security reasons, external configuration only supports packages that
have the browserslist-config- prefix. npm scoped packages are also 
supported, by naming or prefixing the module with 
@scope/browserslist-config, such as @scope/browserslist-config or 
@scope/browserslist-config-mycompany

And we have to add:
"browserslist": ["extends @instructure/browserslist-config-canvas-lms"],
to all of our package.jsons that use @instructure/ui-babel-preset 
because that by default will use 
"extends @instructure/browserslist-config-instructure—ui" which would
still do all the stuff for IE11

Test plan:
* run `yarn`
* all those errors about browserslist and postcss should not show uo

* look at the code in public/dist for canvas-planner,
* It should not include regenerator-runtime and you should see native
  `async` functions

Change-Id: Ic84c13ac59d58963c12b8365b3068b5da3ee618d
Reviewed-on: https://gerrit.instructure.com/204251
Tested-by: Jenkins
Reviewed-by: Cameron Matheson <cameron@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-08 20:12:31 +00:00
Ryan Shaw d00f74a2d7 Drop IE 11 support
closes: CORE-3175

based on our browser support documentation
(https://community.canvaslms.com/docs/doc-10720) "On August 3, 2019,
Internet Explorer 11 will no longer be supported as a Canvas browser."

and since any code being merged to master now won't hit prod until after
august 3rd, we can safely drop IE11 support now

test plan:
* look at the code generated by webpack
* you should see things like "class" and arrow functions "() => {}"
* if you go to canvas in IE 11, it should not work
* if you go to canvas in the next oldest browsers we support (which
  would probably be Edge 42 or Safari 11) it should still work the same
  as it did before

Change-Id: Ifc7f64902a333fd0f662ff6a68eb8f4353f01130
Reviewed-on: https://gerrit.instructure.com/197827
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-07 14:40:40 +00:00
Ed Schiebel 7e41826748 fix <Select> deprecation in NewCourseModal
Replace Select with CanvasSelect
Replace legacy TextInput with the new TextInput

fixes ADMIN-2771

test plan:
  - go to account courses page, /accounts/self
  - click the "+Course" button
  > expect the 2 TextInputs to accept input
  > expect the subaccount and term selects to work as expected
  > expect some nice screenreader messages as you interact with the
    selects
  > expect the course to be created with the right data
    when clicking on the "Add Course" button
  - try it again, but do something to make it fail (I set a breakpoint
    at courses_controller.rb line 791 and set @course=nil)
  > expect to get an error flash message
  - click on the "details" button
  > expect the details popup to be above the Modal's overlay and you
    can dismiss it.

Change-Id: I8612b086a8812660c82c9d243746ed211deb5a59
Reviewed-on: https://gerrit.instructure.com/202575
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-08-06 17:23:46 +00:00
Ryan Shaw f0858936ab Backport instUI fix to allow themeable w/ `class`es
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>
2019-08-06 16:07:55 +00:00
Ryan Shaw 10a4516082 Use jsdom 14 instead of 11 in jest tests
Test plan:
* `yarn jest` should pass

Change-Id: I157a55be009bae71e574ed0e9b9ff18f9e2c048b
Reviewed-on: https://gerrit.instructure.com/203860
Reviewed-by: Cameron Matheson <cameron@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-05 20:36:16 +00:00
Ed Schiebel 28ea3000ef Fix Select deprecations with CanvaSelect
this commit add the new CanvasSelect which wraps the new controlled-only
INSTUI Select (single select only) to provide a nearly drop-in
replacement for the deprecated INSTUI Select used in canvas.

This new CanvasSelect is then used in people_search.js and
TimeZoneSelect/index.js to resolve the
deprectation warnings.

changes include an upgrade to ui-select 6.8

closes ADMIN-2775, COREFE-186 COREFE-184

test plan:
  - nav to a course's people page
  - click on the +People button
  > expect the Role and Section selects to work as expected
  - nav to the account's people page
  - click on the pencil icon to the right of a user
  > expect the Time Zone select to show a blank line, then 2 groups
    of time zones
  > expect the select to work as expected
  > expect screenreaders to tell you interesting things as you
    interact with the select

Change-Id: I5dcfb2c1c8ca64071ce9dbf0a194777f10c711cf
Reviewed-on: https://gerrit.instructure.com/202508
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-08-05 19:30:43 +00:00
Ryan Shaw 8ae3033745 Update testing-library to use packages w/ @scoped names
See: 
github.com/testing-library/dom-testing-library/releases/tag/v4.0.0
For the reason behind why the specs had to change to findAllByText

Test plan:
* js tests should pass

Change-Id: Idc5b217a0923cf7d702f94dfd4f3393beaa14a19
Reviewed-on: https://gerrit.instructure.com/202009
Tested-by: Jenkins
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-07-22 16:26:15 +00:00
Landon Gilbert-Bland ea769fb488 New mocking foundation for A2 student view tests
Utilizing https://www.apollographql.com/docs/graphql-tools/mocking/

Benefits of this new approach:
  - Query, propTypes, and mocked data all exist in the same location, so
    it becomes much easier to modify.
  - You can easily mock data nested deeply in data without needing to
    manually drill down into it.
  - The mocked data comes from a FRD graphql query, so you cannot
    accidently put invalid fields into the testing data (for example,
    null for a string that is marked as not null).
  - Can save complex overrides into reusable pieces (graded submission)

Fixes COMMS-2224

Test Plan:
  - Jenkins passes

Change-Id: Ib6c3c6f3b3c16b8829d89061b41d8a4d308eb0ed
Reviewed-on: https://gerrit.instructure.com/201591
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Landon Gilbert-Bland <lbland@instructure.com>
2019-07-20 23:53:11 +00:00
Ryan Shaw 772d1f6994 don’t count unread_count or dashcard indicators against newRelic load time
closes: CORE-3187

AKA:
Revert "Revert "don’t count unread_count or dashcard indicators 
against newRelic load time""

This reverts commit d754ff5ed1.

Test plan:
* the little badges that show unread discussion counts and stuff
  on each dashcard should work the same as before
* the badge on the global nav that shows how many unread inbox messages
  You have should work the same as before
  * if you have newRelic set up, neither should count against page load
  metrics

Change-Id: I3b869e7fb650f40f16f514db9d8b9f558443db5b
Reviewed-on: https://gerrit.instructure.com/201202
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-07-16 20:38:06 +00:00
gbeckmann d754ff5ed1 Revert "don’t count unread_count or dashcard indicators against newRelic load time"
This reverts commit aa977ecd2a.

Reverting based on belief that this is surfacing errors in the build:

"something went wrong updating unread count" TypeError: Failed to fetch

Change-Id: I842ad732d75c6ca83f31e140ddf5edb6f10e45fe
Reviewed-on: https://gerrit.instructure.com/201108
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
2019-07-13 01:06:56 +00:00
Ryan Shaw aa977ecd2a don’t count unread_count or dashcard indicators against newRelic load time
closes: CORE-3084

Test plan:
* the little badges that show unread discussion counts and stuff
  on each dashcard should work the same as before
* the badge on the global nav that shows how many unread inbox messages
  You have should work the same as before
* if you have newRelic set up, neither should count against page load
  metrics

Change-Id: I03f81c30223355ce3e1a2632ba17bfd6f1ae658f
Reviewed-on: https://gerrit.instructure.com/197823
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-07-11 22:09:37 +00:00
Ed Schiebel 5e5120e566 Give RCEWrapper onFocus/onBlur handlers
closes ADMIN-2742

there are challanges
- RCEWrapper keeps track of whether it has focus. This is true if
  anything w/in its outermost div is the activeElement
- since the previously active element blurs
  before the new element becomes active. we need a timeout to wait and
  see where focus lands. this is true when:
  - focus moves to a tinymce popup, like a menu
  - focus moves to one of RCE's dialogs or trays
  - the user interacts with content in the CanvasContentTray. This
    is because a new instance of the CCT is created every time it
    renders as the user interacts with it. (An artifact of how it's
    wired into redux).

This also addresses a bug where the html-view textarea was the wrong
size when flipping between rich text and html views.

NOTE: if you close any of the Trays or Modals by typing "esc", it will
blur the RCE. This is a known bug that I'm hoping will be fixed
via INSTUi-2201. If not, then via another CORE ticket

test plan:
  - not necessary, but if you test in assignments2, you'll know it's
    working because the RCE will go away if it loses focus,
    so enable assignments2, create an assignment, then
    edit the assignment (you can't create an a2 assignment yet)
  - insert and edit an external link
  - insert and edit a course image
  - upload an image
  - insert and edit a course document
  - upload a document
  > in each case, expect focus to return to the RCE, and if applicable,
    the yellow indicator box is correctly positioned.
  - in any of the above cases, click on the yellow indicator while it's
    visible
  > expect focus to stay w/in the rce

  resizing:
  - click the "switch to html view" button
  > expect the textarea to fill the avaiable space
  - resize it and click the button to switch back
  > expect the rce to be the same (or really close) size

Change-Id: If85c5644558fbce27530e43bb71c2bdb7e91eb12
Reviewed-on: https://gerrit.instructure.com/199273
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2019-07-05 21:22:37 +00:00
Aaron Griffin 840cf27953 Support i18n numbers on quizzes edit page
Test Plan:
- Given a quiz in a locale with different number formatting
- Change the points of a question to '1234.5' in that locale
- See it accept and format points correctly on the question and the
  header

Closes QO-442

Change-Id: I75c353716718377bb26c1088a4db58aaa7c8f721
Reviewed-on: https://gerrit.instructure.com/198543
Tested-by: Jenkins
Reviewed-by: Jonathan Holt <jholt@instructure.com>
QA-Review: David Tan <dtan@instructure.com>
Product-Review: Kevin Dougherty III <jdougherty@instructure.com>
2019-06-27 18:05:20 +00:00
Jon Willesen debef8b978 add react-hooks linting and update react dep
Update the react dependency to 16.8 since we're starting to use react
hooks, which requires that version at minimum.

test plan:
- linting still works
- intentionally create a violation of rules-of-hooks. Linting should
  find and report the error.

Change-Id: I0baccd64397b31118b96eb390462acf56daeca96
Reviewed-on: https://gerrit.instructure.com/199053
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
2019-06-26 16:24:49 +00:00
Clay Diffrient 71eb30a096 Update @instructure/canvas-rce-old to 4.1.4
closes CORE-3097

Test Plan:
  - Languages work properly on RCE

Change-Id: I35e0d913ddd229dc2bcd605c2c7ffc0ed2a65a80
Reviewed-on: https://gerrit.instructure.com/198643
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
Tested-by: Jenkins
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2019-06-21 20:42:02 +00:00
Clay Diffrient 23050ed475 Update to @instructure/canvas-rce-old@4.1.3
closes CORE-3097

Test Plan:
  - Automated tests pass

Change-Id: If618a2f1c01ab221b74991134b3d91150b557afc
Reviewed-on: https://gerrit.instructure.com/198528
Tested-by: Jenkins
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
2019-06-20 22:25:51 +00:00
Cameron Matheson a6faeedf7f upgrade graphiql-explorer
Change-Id: Ie853ea9bbf0dbdbf58b0f0e572ff129ec6922577
Reviewed-on: https://gerrit.instructure.com/196594
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2019-06-05 20:06:06 +00:00
Ryan Shaw 145bef14d4 Fix docker build running out of js heap memory
Test plan:
* the docker image should pass
* if you want to test locally, run:
  `RAILS_ENV=production bundle exec rake canvas:compile_assets`
* that should work

Change-Id: I800a4ee035ec3f853c924a6f520ae061fccb4b56
Reviewed-on: https://gerrit.instructure.com/195856
Reviewed-by: Carl Kibler <ckibler@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-05-30 19:10:38 +00:00
Ryan Shaw 95275abd5d Speed up $.support checks that were for old IE versions
closes: CORE-3020

Doing these feature detections takes my chrome browser on a fast
MacBookPro 21ms. See: https://cl.ly/868790d66a8f

I hate to actually make any changes here but these are all things
That no browser that we support doesn’t support. And getting a flat
21ms boost on every pageload I think might be worth it.

To see the actual changes, look at this commit on GitHub:
https://github.com/ryankshaw/jquery/commit/dadf794ebc4c4dcf94c344dab7d9

Change-Id: I836f0ac19ae234fc789423d833a20b760fd42dc7
Reviewed-on: https://gerrit.instructure.com/195704
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-05-30 17:01:20 +00:00
Ryan Shaw 3864abfe6d upgrade canvas-rce to instUI 6 and consume it as esModules
closes: CORE-2922 CORE-2951 CORE-2950 CORE-2952

Also, since we are using the new @instructure/ui-icons we can pull
In the latest icons that design wants us to use for the toolbar buttons

test plan:
* canvas-rce build should pass and canvas webpack should consume it
  as a “harmony export”
* check the “text color” button in the toolbar, it should
  Update it’s color to match the color you picked
* the bulleted list icons in the toolbar should use instUI icons
* run `yarn webpack:analyze`, the canvas-rce chunk should be a lot
  Smaller than it was. and everything from @instructure/ui-whatever
  Should be coming from the /es dir.

Change-Id: I13c670bdd174a9bc10aca4a7f9c5bc9208883ac9
Reviewed-on: https://gerrit.instructure.com/192569
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-05-16 20:49:42 +00:00
Ryan Shaw 4944bccb2d upgrade webpack to v4
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>
2019-05-16 15:59:04 +00:00
Ryan Shaw 00c49d7833 add a “webpack:analyze” command to package.json
This is so other people can generate that webpack chunk webpage that
shows how big all the chunks are and what is in them

Test plan:
* either run script/nuke_node.sh or compile_assets or in some other way,
  make sure your public/javscripts/translations files are up to date
* then run `yarn webpack:analyze`
* it should work for a few minutes then open a page that shows cool
  webpack chunk stats in your browser

Change-Id: Ia070e373d81aaeec2131e8e299f82515cff57fa4
Reviewed-on: https://gerrit.instructure.com/193087
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-05-13 20:21:52 +00:00
Ryan Shaw 3bad0a160b Remove add-module-exports babel plugin & use esModules
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>
2019-05-03 22:49:58 +00:00
Steven Burnett 95474fbf9b add arc media player to canvas
fixes CORE-2871

Test Plan:
- go to a2 student view
- have a video comment added to the submission
- view the comments tab
- notice the new video player

Change-Id: I58a947fb2b5b31dd7fcb1fc63ae582b7e1038201
Reviewed-on: https://gerrit.instructure.com/191671
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-05-02 17:14:40 +00:00
Ryan Shaw cd839b6f90 Revert "Upgrade node-sass since it has fixed bug we needed"
...Because it has NOT fixed the bug we needed it to

Closes: CORE-2817

This reverts commit e7c110f88a.

Test plan:
* open any page in canvas
* in the dev console, type $.flashError(“whatever”)
* the error message that appears should be styled correctly

Change-Id: I748b0f4607f671ba22ec0a38f9422e6179be24ab
Reviewed-on: https://gerrit.instructure.com/191538
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-04-30 21:33:20 +00:00
Jon Willesen 605fc86ec9 add apollo graphql query validation tools
These tools allow unit tests to validate that the graphql queries being
run using Apollo are valid according to the server's schema. This
includes validating the variables.

This commit includes a fix that the validator found with overrides where
a Section requires a name (String!), but a Group does not (String). To
fix the validation error, we have to have separate names for these
fields and handle the possibility that the group might have a null name.

closes ADMIN-2561

test plan:
- specs pass
- can still display the "Everyone" override (when there are no overrides)
- can still display the "Everyone Else" override

Change-Id: Ic19605e5ee12075e9abb5bb089e0285639957b69
Reviewed-on: https://gerrit.instructure.com/188602
Reviewed-by: Mysti Lilla <mysti@instructure.com>
Reviewed-by: Cameron Matheson <cameron@instructure.com>
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-04-23 19:51:10 +00:00
Ryan Shaw 25bd35cf79 Load Lato font from google
closes: CORE-2746

THis is an attempt to make loading our Lato font faster for our end
users. From talking to @pam, it is our understanding that at the time
we introduced this, google did not have all the extended latin 
characters, and that is why we served it ourselves.

But now google *does* include the extended latin characters so
it should be fine?

The good thing about loading it from google is that there is more of a
Likelihood that our users will already have this cached.

Also, to be honest, I still think we should just not download a webfont
and rely on system fonts that users already have. But this is my attempt
to try to see if we can make it faster before resorting that. Because I
know design really likes it :)


Test plan:
* the Lato font on pages should show up the same as it did before but
  page
* load speeds should be faster as reported by lighthouse or our real
  user monitoring

Change-Id: Ibcf75c74f569b6b457fe42d3be91cf6006e560fa
Reviewed-on: https://gerrit.instructure.com/188464
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2019-04-16 21:33:14 +00:00
Ryan Shaw e28bb762a9 Don’t load sanitize-html in the browser
This approach solves the same xss vulnerability, but by doing it a way
we can guarantee that what we are trying to .html() onto the page is
safe (and not just arbitrary user content) instead of having to load the
_huge_ sanitize-html npm package and all of it’s deps
(like postcss, source-map, htmlparser2, buffer, and a bunch of others)
On the frontend so we can use it to sanitize all the untrusted
data-mathml content.

closes: CORE-2748
refs COMMS-1846

Test Plan:
* Go to the calendar, click on a day to add an event, and click on the
  "More Options" button.

* Switch to the html editor, and add the following:

  <img class='equation_image'
  data-mathml='<img src=x onerror=prompt(document.cookie); />'>

* Save the event. Go back to the calendar and click on the newly saved
  event, and notice that you don't get XSS'd

* Create another event in the calendar, and this time add the
  following via the html editor:

  <img class="equation_image" title="(-\infty,\infty)"
  src="/equation_images/(-%255Cinfty%252C%255Cinfty)"
  alt="Infinities: (-\infty,\infty)"
  data-equation-content="(-\infty,\infty)" />

* Save the event, and load it in the calendar. Notice that it still
  properly displays this mathml image properly.

* Test the same calendar event with a screen reader, and notice that
  it is still accessible

Change-Id: I5fc1e17ecfc8576dfeaffacff8efcb08873bdd5e
Reviewed-on: https://gerrit.instructure.com/188609
Tested-by: Jenkins
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-04-12 20:30:55 +00:00
Ryan Shaw 2b8e4c1c2e don’t include really old timezone data in JS bundle
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>
2019-04-11 21:32:03 +00:00
Ryan Shaw 72b517b117 add @babel/plugin-transform-react-inline-elements
closes: CORE-2749

Now that we use babel-transform-runtime, we can also do this to improve
performance over the existing React.createElement calls by inlining the
result of what it would have returned.

see https://github.com/facebook/react/issues/3228 for why this improves
runtime perf

so for an example, say you have:
const foo = <div className="bar" style={{color: 'red'}}>The Text</div>

normally babel would transform that to:
var foo = React.createElement("div", {
  className: "bar",
  style: {
    color: 'red'
  }
}, "The Text");


but this will transform it to:
var foo = _jsx("div", {
  className: "bar",
  style: {
    color: 'red'
  }
}, void 0, "The Text");

That React.createElement is a lot more complex and slower at runtime,
This should make things faster at runtime


TEST PLAN:

* bundle sizes should stay the same but js runtime for react “render”ing
  Should be faster in production mode

Change-Id: I075d249b9effd0af1b16b9e35c1ddd27696c6955
Reviewed-on: https://gerrit.instructure.com/188865
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-04-11 21:01:51 +00:00
Clay Diffrient d237c8634d Bump wsrun to the latest version
Test Plan:
  - All workspaces run their tests on jenkins

Change-Id: I66fa941a11cdd6306a27b5a374af88755d593472
Reviewed-on: https://gerrit.instructure.com/188718
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2019-04-09 14:33:53 +00:00
Jon Willesen e01c5ddf6c A2: search and sort on teacher view students tab
closes ADMIN-2510

test plan:
- on the students tab of teacher view:
- type in the search field, at least 3 characters
  - the search should happen after a short delay and display results
- the name, score, and submission date columns are sortable in ascending
  and descending order
  - sorting causes another load
- enter less than 3 characters in the search field
  - after a short delay, a message should be displayed about needing
    3 characters
- clearing the search field should go back to original search of all
  students

Change-Id: Ibaaeff175089003a4a5fcbb27db32c9510330e25
Reviewed-on: https://gerrit.instructure.com/186995
Tested-by: Jenkins
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-04-05 20:01:08 +00:00
Ryan Shaw ec693f6edb upgrade tinymce-a11y-cheker to work with tinyMCE 5
Closes: CORE-2727 CORE-2728 CORE-2729

This version works with both 5.x and 4.x of tinymce, so it will be fine
To use for both the old code and the new code

Test plan:
* smoke test to make sure that the a11y checker works just like it used
  to
* in my following commit that upgrades to tinymce 5, you should not see
  Errors about the a11y_checker plugin not working with tinymce 5

Change-Id: I220e79a5c5e04fc589d906adde83ab4c7ebb5794
Reviewed-on: https://gerrit.instructure.com/188187
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2019-04-04 18:19:29 +00:00
Ryan Shaw 4f97c6df56 remove all the legacy RCE code
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>
2019-04-04 18:19:12 +00:00
Ryan Shaw ed46527652 Upgrade to babel 7 & allow any js file to be themeable
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>
2019-04-02 14:59:20 +00:00
Jeremy Neander acbf5f6b56 spec: [ci-coverage] increase limits for jest coverage
Change-Id: I52bfa14af7caa1c71449546c50b07d13d036b47a
Reviewed-on: https://gerrit.instructure.com/187716
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Jeremy Neander <jneander@instructure.com>
Product-Review: Jeremy Neander <jneander@instructure.com>
2019-03-30 21:09:32 +00:00
Clay Diffrient b709adbec9 Bump @instructure/canvas-rce-old to 4.1.2
closes CORE-2712

Test Plan:
  - Automated tests pass

Change-Id: I7ea688ed7fba1212f74676a0f52784e32b80baae
Reviewed-on: https://gerrit.instructure.com/187345
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-03-28 18:40:43 +00:00
Ryan Shaw 8f26727921 relax node version req so it works w/ docker
Test plan:
* if you rebuild your docker image it shouldn’t complain about
  A node version that is not compatible with this module

Change-Id: Ieef58139be7a913a9aa3b5156937e01752dd1537
Reviewed-on: https://gerrit.instructure.com/186683
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-03-25 15:19:31 +00:00
Clay Diffrient 2561dd8a2f Switch to using @instructure/canvas-rce-old
closes CORE-2587

Test Plan:
  - Automated tests pass
  - RCE instances work

Change-Id: Ia128443f5929898937848587a83a853e36b5562d
Reviewed-on: https://gerrit.instructure.com/186624
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-03-22 23:11:36 +00:00
Clay Diffrient ade362e515 Bump to Node 10
closes CORE-2329

There were some tests that were expecting a snapshot-like value
where it expected `new Date().toLocaleDateString()` to give something
Like “2016-7-11” but that was actually wrong. If you do
`new Date().toLocaleDateString()` in a browser it will give you
something like “7/11/2016”. And this new version of node matches what
a real browser would have done, so I just updated the specs so they
are looking for the correct format. This change does not actually
reflect a change in what a real user would see. Just what
jest/jsdom/node formats it as.

Test Plan:
  - check to make sure that the assignments 2 availability dates
    component produces markup exactly as it did before
  - Automated tests pass
  - Build canvas locally, everything passes.
  - Build canvas with docker, everything passes.

Change-Id: I74285cd6d9b251ca60ab79396e332cc3a419bcee
Reviewed-on: https://gerrit.instructure.com/177198
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-03-22 17:29:36 +00:00
Steven Burnett 004ac8108c add media player to submission comments
fixes COMMS-1867

Test Plan:
- In old assignments/submission works flow
  add a couple comments that are either video
  only or audio only
- in A2 as a student visit the comments tab
- notice the videos show up in the new player
  and work as expected

Change-Id: Ibbb87dd6e264fe49431045e3365771b21111134c
Reviewed-on: https://gerrit.instructure.com/185633
Reviewed-by: Ryan Norton <rnorton@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-03-22 16:57:45 +00:00
Ryan Shaw 1f02d86f68 Upgrade canvas-planner & rce to not use ui-presets
This gets canvas planner and canvas-rce on babel 7, which is a 
prerequisite to canvas doing the same. Also, by not depending on the
Kitchen sink of ui-presets, it cleans a ton of unused stuff from our
node_modules/yarn.lock. It was originally 2 different commits but
in order to get the yarn.lock right, we have to do them all as one.

This also made it so we needed to have less “resolutions” in our
package.json since the newer versions of those things work fine with
the newer version of babel

So there are 2 test plan areas:

1. Canvas-planner
Closes:  CORE-2575

Test plan:
* smoke test to make sure everything in canvas-planner still works/looks
  like it used to in the canvas ui
* make sure the translation task (yarn check-transifex) still works

canvas-rce: upgrade to babel 7 & @instructure/ui-babel-preset

2. canvas-rce
Closes: CORE-2576

Test plan:
* smoke test the RCE editor
  * theming should still work/look exactly as before
* make sure all the various build tasks (eg yarn test, test:coverage,
  debug, lint, extract, etc) all still work as before

Change-Id: Id896687e3905f4df4627b181cad3f67ffe4417a5
Reviewed-on: https://gerrit.instructure.com/183877
Tested-by: Jenkins
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-03-18 20:48:42 +00:00
Jon Willesen 60df2bed3a fix jest tests timing out in jenkins
Change-Id: I594d05c5375b20d9eff78487c1a84023ad65e438
Reviewed-on: https://gerrit.instructure.com/184792
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-03-12 14:48:51 +00:00
Jeremy Neander 47d2b83f9f update qs dependency
test plan:
 * Verify Jenkins passes?

Change-Id: If472d2f898e4241d0d10dfd7f1ca5094ecf9d811
Reviewed-on: https://gerrit.instructure.com/184039
Tested-by: Jenkins
Reviewed-by: KC Naegle <knaegle@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jeremy Neander <jneander@instructure.com>
2019-03-06 19:07:48 +00:00
Ryan Shaw e7c110f88a Upgrade node-sass since it has fixed bug we needed
Since node-sass has fixed the bug that was causing this issue, we can
let it upgrade like normal and don’t need to pin it to a specific
version.

refs: SIS-3125, COMMS-1328
Also see: g/157921


Test plan:

QA:
* go to courses/x/assignments
* add a new assignment group
* the green little notification that appears should be styled correctly,
  Exactly as before

DEV:
* ensure that the output from this code in g_instructure.scss:
  …
  li:not(.ic-flash-info, .ic-flash-success, .ic-flash-warning, .ic-flash-error) {
    …

doesn’t erroneously get output as:
  ...
}

Change-Id: I0bd7a42ee4026faea7327270df7413036f77c809
Reviewed-on: https://gerrit.instructure.com/183688
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Steven Burnett <sburnett@instructure.com>
2019-03-05 22:44:07 +00:00
Brent Burgoyne 97e4ed3ac0 make inspect-process an optional dependency
Change-Id: If62f0601df401e2407a0a606a75c230d1225b205
Reviewed-on: https://gerrit.instructure.com/183822
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Tested-by: Jenkins
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2019-03-05 16:57:27 +00:00
Ed Schiebel 984088748f Update assignment as it's edited
closes ADMIN-2343

test plan:
  - load an assignment in the A2 teacher view, add #edit to the url and
    refresh the page
  - change each field on the page (modules, group, name, points,
    description, submission type, attempts allowed. others are not
    wired up yet since the UI for these either isn't built yet, or has
    changed recently)
  > expect the Cancel/Save/Publish foot er to appear. buttons on the
    right
  > on clicking cancel, expect the changed value(s) to revert and the footer to disappear
  > on clicking save, expect the footer to disappear
  > on clicking publish, if previously unpublished expect footer to
    disappear and the toggle to flip to published
  - flip the publish toggle
  > expect the footer _not_ to appear
  - flip to rtl
  > expect the footer buttons to be on the left, even in Edge
  - enter an invalid value for Points
  > expect an error message, and for the field to remain in edit mode
  - delete the assignment's name and TAB
  > expect an error message that the name is required

Disabling the Save and Publish buttons when there are invalid fields on
the page is left to ADMIN-2443

Change-Id: I016af6dc6e0e18d9aed1c364a328f9107a4d2762
Reviewed-on: https://gerrit.instructure.com/180831
Tested-by: Jenkins
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-02-26 18:35:10 +00:00
Brent Burgoyne d1be7c5d27 make test:jest:debug open dev tools automatically
Change-Id: Ie98f6055f848a4605b4f3276a403f05d345ae2a7
Reviewed-on: https://gerrit.instructure.com/182603
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2019-02-25 17:57:42 +00:00
Brent Burgoyne 96315b8626 support testing coffeescript with jest
Change-Id: I540ad44c033e489ff49c251256263d547ca258cd
Reviewed-on: https://gerrit.instructure.com/182600
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2019-02-25 17:57:15 +00:00
Ed Schiebel 0f6321312c Add graphiql-explorer to canvas' graphiql instance
The graphiql-explorer makes it easy to explore the schema and build
queries simply by checking the boxes next to fields from the schema

test plan:
  - /graphiql still works as expected, but includes the explorer panel
  - canvas features that leverage graphql still work as expected
    (since the version of the graphql js client was updated)

Change-Id: Ief625c6fb59e4e32e23a177f3b566aae271ab108
Reviewed-on: https://gerrit.instructure.com/181586
Tested-by: Jenkins
Reviewed-by: Carl Kibler <ckibler@instructure.com>
QA-Review: Carl Kibler <ckibler@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-02-15 16:42:12 +00:00
Ed Schiebel 0a3cc60ca7 upgrade instUI to 5.41.1
test plan:
  - tests pass and everything still works

Change-Id: I73540f1b5e4647c19f3446ce558bce7e4dfde684
Reviewed-on: https://gerrit.instructure.com/180736
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Daniel Sasaki <dsasaki@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-02-09 15:52:58 +00:00
Steven Burnett 37cc468cb9 dynamic import comments
refs COMMS-1844

Test Plan:
- Click on comments on an A2 student view
- notice there is a loading indicator then
  the comments load
Change-Id: I43ed778b826153b5cb4e58b9365a0016dec10897
Reviewed-on: https://gerrit.instructure.com/180618
Tested-by: Jenkins
Reviewed-by: Aaron Hsu <ahsu@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-02-06 20:36:20 +00:00
Ed Schiebel 3b006a6fc1 Make A2 header content editable
waiting on an instui release. without it
  1. the Points edit has the wrong font size
  2. you cannot delete a module

closes ADMIN-2303

test plan:
  - create an assignment, open it, click the assignments 2 button,
    then add #edit to the url and refresh (this forces the assignment
     into edit mode)
  > expect the assignment type to be "Assignment" and to be editable
    - on selecting any value other than "Assignment", expect to be
      sent to the corresponding page in canvas after confirmation
  > expect the correct module(s) to be selected, and to be editable
    - expect to be able to select > 1 module
    - when all modules are deleted, expect th "No Module Assigned"
      placeholder
  > expect the correct assignment group to be selected, and to be
    editable
  > expect the assignment name to be correct and editable
  - edit and delete the name
  > expect a "name is required" message
  > expect the points to be correct and editable
    - entering anything that's not a number should result in an
      error message

Change-Id: Ief36b01d7f5380f16d3e76b7afeb7d7d8e38b3bc
Reviewed-on: https://gerrit.instructure.com/176293
Tested-by: Jenkins
Reviewed-by: Carl Kibler <ckibler@instructure.com>
QA-Review: Carl Kibler <ckibler@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-02-05 15:47:27 +00:00
Ed Schiebel 9bb68cb4a7 Add override details to teacher view
closes ADMIN-1510

This change includes some code to flip some of the elements into edit
mode, but that's not part of this ticket (though if you want to see
it, add #edit to the URL)

test plan:
  - have an assignment with some submission types, specified allowed
    filename extensions, due, lock, unlock dates
  - load /courses/:course_id/assignments/:assignmen_id?assignments_2=true
  - click the ">" to expand the override summary to see the details
  > expect the data to match your assignment

notes:
  - "score to keep" and submission requirements are hard-coded for now
    until we get the data
  - the attempts input only appears when attempts allowed is limited
    (e.g. non null)
  - Submission Requirement only appears when there are > 1
    submission types
  - the UI mostly matches the mockup. Mary's design is changing, so
    it may not be 100% exact.

Change-Id: Ia385ec7880e3d834658d412a4c7ac5afc9091fac
Reviewed-on: https://gerrit.instructure.com/175098
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
2019-02-01 19:22:57 +00:00
Jon Willesen d82b5fafe6 A2: implement delete button
closes ADMIN-2233

test plan:
- click the delete button which will open a confirmation dialog that
  roughly matches the design
- a11y for the dialog should make sense
- the close button should dismiss the dialog with no effect
- the cancel button should dismiss the dialog with no effect
- the delete button should start a delete operation
- when the delete operation completes, you should be redirected to the
  assignment index screen with a message indicating the assignment has
  been deleted
- if your user does not have permission to delete the assignment, or
  some other error occurs, then the in-development error screen should
  be shown

Change-Id: I0c3304360d3c389296bd0910d02d8215bdb0ac9e
Reviewed-on: https://gerrit.instructure.com/177754
Reviewed-by: Carl Kibler <ckibler@instructure.com>
Tested-by: Jenkins
QA-Review: Carl Kibler <ckibler@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-01-30 22:23:46 +00:00
Landon Gilbert-Bland 466afa70be Fix XSS in calander
Fixes COMMS-1846

Test Plan:
  * Go to the calendar, click on a day to add an event, and click on the
    "More Options" button.

  * Switch to the html editor, and add the following:

    <img class='equation_image'
    data-mathml='<img src=x onerror=prompt(document.cookie); />'>

  * Save the event. Go back to the calendar and click on the newly saved
    event, and notice that you don't get XSS'd

  * Create another event in the calendar, and this time add the
    following via the html editor:

    <img class="equation_image" title="(-\infty,\infty)"
    src="/equation_images/(-%255Cinfty%252C%255Cinfty)"
    alt="Infinities: (-\infty,\infty)"
    data-equation-content="(-\infty,\infty)" />

  * Save the event, and load it in the calendar. Notice that it still
    properly displays this mathml image properly.

  * Test the same calendar event with a screen reader, and notice that
    it is still accessible

Change-Id: If0f1ac8ad93f04ececb7aa2f7ef221204b1ce14f
Reviewed-on: https://gerrit.instructure.com/179783
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-01-30 16:39:43 +00:00
Clay Diffrient 8fcb27bc5d Add sub-account settings for CSP
closes CORE-2253

Test Plan:
  - Enable CSP settings
  - Go to a sub-account's settings page
  - You should see a security tab
  - Go to the security tab
  - CSP information should be displayed including a toggle
    between Off, Inherited, and On.
  - Behavior should match the description shown on the page.

Change-Id: If2a485cc3712f6af8d266401da67d4deaa845696
Reviewed-on: https://gerrit.instructure.com/177971
Tested-by: Jenkins
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2019-01-23 14:43:41 +00:00
Clay Diffrient 3938ab7550 Add CSP whitelist to the security settings
closes CORE-2109

Test Plan:
  - Enable the Content Security Policy feature flag
  - Go to account settings, security tab
  - Use the Add Domain form to add a domain
  - It should appear on the whitelist
  - Flip the CSP switch to enabled

Change-Id: Iaea578c52e9b8bb6541a4e13edc6a1702e907cdf
Reviewed-on: https://gerrit.instructure.com/174980
Tested-by: Jenkins
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
2019-01-18 23:10:26 +00:00
Clay Diffrient 66517541a5 Bump a11y checker to 1.11.0
closes CORE-2323
refs CORE-2115
refs CORE-2097

Test Plan:
  - Add something to an RCE instance that has a11y errors
  - Run the a11y checker
  - You should see errors show up.
  - Click the (?) hint button
  - The tooltip should contain a link for most rules
    that is descriptive (e.g, learn more about xyz)
  - The link should also be underlined

Change-Id: I1930f855d05ffa71f7e27c2943503371e6224175
Reviewed-on: https://gerrit.instructure.com/173487
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2019-01-15 21:05:07 +00:00
Clay Diffrient 6bccbbbc53 Update and remove duplicate version of lint-staged
Test Plan:
  - Automated tests pass

Change-Id: I905418abde9ce75b3d7f1b9e878faeaf7e288b9e
Reviewed-on: https://gerrit.instructure.com/177176
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2019-01-08 20:20:30 +00:00
Jeremy Neander 7144c8dce1 spec: add fetch polyfill for jsdom
Because JSDOM has … needs.

Change-Id: I3b929d96dc208c6b32802bbfa806cc22adff7fdf
Reviewed-on: https://gerrit.instructure.com/177129
Tested-by: Jenkins
QA-Review: Jeremy Neander <jneander@instructure.com>
Product-Review: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Keith Garner <kgarner@instructure.com>
2019-01-08 17:16:31 +00:00
Landon Gilbert-Bland a6a40b99bc Display multiple modules in A2 student view
This also adds support for apollo-link-state. We are using this to move
data from the `ENV` into our apollo query results, to keep a single
source of truth and easier unit tests.

If there are more then two modules that an assignment belongs to
(which is abnormal) we are only rendering the first two modules with an
additional link to the modules page, indicating that there are more
modules this assignment belongs to.

Fixes COMMS-1800

Test Plan:
  - Create an assignment, and add it to four modules
  - Navigate to the assignment as a student
  - Notice that 2 of the four modules are displayed in the header

Change-Id: I9b797486ba56c8b827e5f76114c5a08d2f969f41
Reviewed-on: https://gerrit.instructure.com/174837
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Landon Gilbert-Bland <lbland@instructure.com>
2018-12-12 19:29:22 +00:00
Clay Diffrient 439af4080f Update redux-logger to 3.0.6
test plan:
      - automated tests pass

Change-Id: Iaf8b223e7c60a43f5b4e10561d5d66643a312992
Reviewed-on: https://gerrit.instructure.com/173817
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
2018-12-05 18:29:35 +00:00
Clay Diffrient 41e58c5712 Update redux-thunk to 2.3.0
test plan:
      - automated tests pass

Change-Id: I3417cc46a9581dd4fe72fc96f8c8e995b90303fd
Reviewed-on: https://gerrit.instructure.com/173816
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
2018-12-05 18:29:23 +00:00
Clay Diffrient 5a789aff54 Update redux-actions to 2.6.4
test plan:
      - automated tests pass

Change-Id: I82969f661e78370c8a2f9035c2bca7d2397fb377
Reviewed-on: https://gerrit.instructure.com/173815
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
2018-12-05 18:29:11 +00:00
Clay Diffrient 4edcef8795 Update react-redux to 5.1.1
test plan:
      - automated tests pass

Change-Id: I6c1034ec8f443d10d39b5b551c1b7207e5191411
Reviewed-on: https://gerrit.instructure.com/173814
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
2018-12-05 18:28:59 +00:00
Clay Diffrient 7d02e89263 Update redux to 4.0.1
test plan:
  - automated tests pass

Change-Id: I00260366f32e0407eaf4277b5b2d26d9896915ac
Reviewed-on: https://gerrit.instructure.com/173813
Tested-by: Jenkins
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
2018-12-05 18:28:44 +00:00
Clay Diffrient 1a4d8f39a9 Extract jest-moxios-utils to its own package
closes CORE-2217

Test Plan:
  - Automated tests pass

Change-Id: Icba5c61344e22e8a8e4929b9133c9a2b89a80ef9
Reviewed-on: https://gerrit.instructure.com/174135
Tested-by: Jenkins
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-12-04 22:38:28 +00:00
Cameron Matheson 1506e683c7 use apollo client instead of apollo boost
This prepares us for using apollo's instrospection fragment matcher
(which isn't supported with -boost).

Test plan:
  pages that use graphql still work

refs GQL-17

Change-Id: Ib6af304855e6c0e23b598344ac1d30f4d4aa03a5
Reviewed-on: https://gerrit.instructure.com/172936
Tested-by: Jenkins
Reviewed-by: Carl Kibler <ckibler@instructure.com>
QA-Review: Cameron Matheson <cameron@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
2018-12-03 06:43:30 +00:00
Brent Burgoyne b9174e5f76 fix pre-commit hook with unfixable eslint error
test plan:
- have a local yarn install
- add an unfixable lint error (unused var) to a file in the prettier
  whitelist
- try to commit the file
- it should not try to run in docker after the lint error

Change-Id: If1fcfc6693be26c6f6fdddb8cfa4c54a73512ebe
Reviewed-on: https://gerrit.instructure.com/173469
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
2018-11-27 23:28:12 +00:00
Clay Diffrient 93a6d18046 Add precommit hook for auto fixing files
This only affects javascript files and only affects things
from the prettier whitelist

This will run slowly if you don't have node_modules installed
locally (e.g., in Docker), but it will gladly attempt to
run things in Docker for you.

This adds a new githook_installer image that will install
the githook whenever a docker-compose up happens in the
repo.  It will also install the hook whenever a `yarn`
occurs locally (as a postinstall hook).

This commit should also not fail things.  For example
having unused variables is an ESLint error, but it isn't
autofixable.  It will log the error, but will otherwise
continue.  However, it will make this pretty with prettier
as well as fix any other autofixable ESLint errors.

closes CORE-2118

Test Plan:
  - Run `yarn`
  - Add some semicolons to something from the whitelist
  - git add that file
  - git commit and it will strip semicolons
  - In a dockerized Canvas:
     - docker-compose up
     - Add semicolons to a file
     - git add that file
     - git commit, it will take forever (~60s)
     - It should have stripped out semicolons

Change-Id: Id9198aa008808e898f29acb9ed64dd14ff843222
Reviewed-on: https://gerrit.instructure.com/171510
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2018-11-27 21:07:31 +00:00
Steven Burnett ce931bd2b8 get basic assignment data for students
fixes COMMS-1764

Test Plan:
- Visit an individual assignment page as a student
- notice your data is no longer mocked and shows correctly

Change-Id: I7810db47fa81c6120285359d754e1d9465ad3fe5
Reviewed-on: https://gerrit.instructure.com/173177
Tested-by: Jenkins
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2018-11-26 22:28:39 +00:00
Clay Diffrient 36ff81bcd8 Remove npm-run-all because it is unused
Test Plan:
  - Automated tests pass

Change-Id: Iefc64451fc20680afd9a77c594eba5df677cf66e
Reviewed-on: https://gerrit.instructure.com/173299
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-11-26 22:26:33 +00:00
Gary Mei 58321400d2 bump npm-run-all version
Change-Id: Ieae7ac480124e52050c79ca83c99a7fe698c48d5
Reviewed-on: https://gerrit.instructure.com/173262
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Gary Mei <gmei@instructure.com>
Product-Review: Gary Mei <gmei@instructure.com>
2018-11-26 19:03:17 +00:00
Landon Gilbert-Bland f019c9a045 upgrade instUI to 5.33.0
Refs COMMS-1522

Test Plan:
  * Jenkins passes

Change-Id: I6fd52c80375d10b6cbb69c1146004a9daaf5442c
Reviewed-on: https://gerrit.instructure.com/172594
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2018-11-16 22:25:34 +00:00
Jon Willesen 1898f2aa06 A2: teacher toolbox and code reorg
This is the first stab at implementing the teacher toolbox.

It also moves code toward the desired organization and frameworks.

closes ADMIN-1507

test plan:
- assignments 2 teacher view shows data on the right side of the header
  -> "X" is used as a placeholder value for values we don't have yet
- "X to grade" goes to the speedgrader for the assignment
- clicking on "Published" toggle shows a placeholder alert for the
  action
- clicking on "X unsubmitted" shows a placeholder alert for the action

Change-Id: I45f51789e2c3722f14482ab57d8d12244cff31b4
Reviewed-on: https://gerrit.instructure.com/170766
Tested-by: Jenkins
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2018-11-12 22:09:31 +00:00
Clay Diffrient 02fde29575 Fix up xsslint to work
This also moves us temporarily to a git branch version of xsslint until the
official package gets a new release with the appropriate fixes in place.

closes CORE-2125

Test Plan:
  - Automated tests pass
  - xsslint output shows that it linted many files

Change-Id: Id87e872dd2b7a08f11c0ddfaebdfc3f44e86c724
Reviewed-on: https://gerrit.instructure.com/171702
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-11-12 16:42:28 +00:00
Clay Diffrient 292b50a49b Update a11y checker to 1.9.2
closes CORE-1972

Test Plan:
  - Open the a11y checker in IE 11
  - It should open and work

Change-Id: Iacfef1e90e255ddf795bb84de430af4f4c39624d
Reviewed-on: https://gerrit.instructure.com/171292
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-11-07 22:46:32 +00:00
Clay Diffrient 58ab36e5d8 ESLint standardization
This commit introduces a better more reasonable ESLint configuration.
It removes all concerns with styling in favor of using prettier to handle
those things.

closes CORE-2096

Test Plan:
  - ESLint works

Change-Id: I50b90b7191b576bce4817d885d14f18c4c72d208
Reviewed-on: https://gerrit.instructure.com/170874
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-11-06 17:46:21 +00:00
Derek Bender df371fb19c turn off webpack progress for less noisy builds
This patchset also enables linting of webpack development to ensure es6
compatability. Before this patchset, gulp was invoked with an ampersand
to make it a background process. However since it only takes a few
seconds to run, it's success messages would be interlaced with webpack's
output. This reads rather odd in our logs. Since gulp is a low-churn
tool in canvas, let's mute stdout but still display stderr if an error
should appear.

Change-Id: I48846758e839480c9bc5779bfe64201e90713e2b
Reviewed-on: https://gerrit.instructure.com/170833
Tested-by: Jenkins
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2018-11-05 16:33:29 +00:00
Jeremy Neander be2db93ffe track anonymous grading in the audit trail ui
closes GRADE-1668

test plan:
 A. Setup
    1. Create an assignment
       * With moderated grading
       * With anonymous grading
       * Worth 10 points
       * Three graders (A, B, and C)
       * Teachers as final grader (not admin)
       * Assigned to only one or two students
          * just for less work in QA

    2. As each student, submit to the assignment

    3. As Grader A:
       a. Assign provisional grades
       b. Maybe leave a submission comment or two

    4. As the teacher, disable anonymous grading
       * The related event will have a warning badge

    5. As Grader B:
       a. Assign provisional grades
       b. Maybe leave a submission comment or two
       * The related events will have warning badges

    6. As the teacher, re-enable anonymous grading

    7. As Grader C:
       a. Assign provisional grades
       b. Maybe leave a submission comment or two

    8. As the final grader:
       a. Visit the moderation page
       b. Select provisional grades
       c. Post grades
       d. Display grades to students

 B. Verify
    1. Log in as a user with "view audit trail" permission (admin)
    2. Open the assignment in SpeedGrader
    3. Open the assessment audit trail

    4. For Grader A
       a. Expand the user event group for Grader A
       b. Verify there is no non-anonymous warning icon to the side of
          the user name
       c. Verify there are no non-anonymous warning badges to the side
          of the user's grading actions

    5. For Grader B
       a. Expand the user event group for Grader B
       b. Verify there is a non-anonymous warning icon to the side of
          the user name
       c. Verify the non-anonymous warning icon triggers a sensible
          tooltip
       d. Verify there are some non-anonymous warning badges to the side
          of the user's grading actions
       e. Verify the badged icons trigger sensible tooltips

    6. For Grader C
       a. Expand the user event group for Grader C
       b. Verify there is no non-anonymous warning icon to the side of
          the user name
       c. Verify there are no non-anonymous warning badges to the side
          of the user's grading actions

    7. For the teacher
       a. Expand the user event group for the teacher
       b. Verify there is a non-anonymous warning icon to the side
          of the user name
       c. Verify there is a non-anonymous warning badge to the side
          side of the user's action disabling anonymous grading
       d. Verify there are no non-anonymous warning badges to the side
          of the user's moderation actions (after enabling anonymous)

Change-Id: I2e675b84dc3e6b59e3111ed39b7a814f38f19f5c
Reviewed-on: https://gerrit.instructure.com/170684
Tested-by: Jenkins
Reviewed-by: Gary Mei <gmei@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
QA-Review: Adrian Packel <apackel@instructure.com>
Product-Review: Sidharth Oberoi <soberoi@instructure.com>
2018-11-05 16:19:55 +00:00
Brent Burgoyne 23bd3885ff don't pin yarn to a specific version
at this point the lock file should be stable enough to relax the
exact version requirement.

Change-Id: If26e59e6fdf938458507e8a1d16def5bda0971b7
Reviewed-on: https://gerrit.instructure.com/170635
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
2018-11-01 16:55:58 +00:00
Clay Diffrient 6764aa5cd2 Bump react to 16.6
closes CORE-2037

Change-Id: I1c00623f789a3a5e377fb0529144a6ebd84a1546
Reviewed-on: https://gerrit.instructure.com/169535
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-10-29 15:39:21 +00:00
Cody Cutrer a92b014b7f bump bigeasy/timezone to 1.0.18 (2018e)
fixes CORE-1985

Change-Id: Ia9d5eddf1462de2226e43012f4756fc1f9b93c25
Reviewed-on: https://gerrit.instructure.com/168277
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2018-10-15 20:38:42 +00:00
Derek Bender 0104c229b3 revert uglifyjs webpack upgrade
Change-Id: I3186254e5916fb335e9b6854f4adfe53f222abad
Reviewed-on: https://gerrit.instructure.com/167985
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
QA-Review: Augusto Callejas <acallejas@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Tested-by: Jenkins
Product-Review: Derek Bender <djbender@instructure.com>
2018-10-11 23:27:57 +00:00
Ryan Shaw ebac5a3ad8 the regular “update all the npm things” commit
this updates all the stuff we get from npm that we _can_ upgrade to
the newest versions available.

test plan:
* all the builds should pass

Change-Id: Icf1cc3cd02d66e6e1f999ea5f5fc3b5b28775881
Reviewed-on: https://gerrit.instructure.com/167282
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-10-09 22:04:49 +00:00
Jon Willesen 3fddcf98e2 add enzyme snapshot serializer to jest
converts all the existing
`expect(component.debug()).toMatchSnapshot()`
to:
`expect(component).toMatchSnapshot()`
which creates more detailed and more diff-able snapshots

test plan:
- specs pass -- this only affects js test code

Change-Id: Ib6dbcc1e3f87e61a251e4635dc68353aca57aeac
Reviewed-on: https://gerrit.instructure.com/167651
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-10-09 21:16:59 +00:00
Dan Minkevitch 3787616c28 Upgrade Yarn version to 1.10.1
if you are having problems after this commit you need
to either: `brew upgrade yarn` or` apt-get install yarn`
or rebuild your docker container or do whatever else you
use to manage software versions

Change-Id: I5c163baa8c4c814eeabca9a46501d508736a4ca1
Reviewed-on: https://gerrit.instructure.com/167252
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Dan Minkevitch <dan@instructure.com>
Product-Review: Dan Minkevitch <dan@instructure.com>
2018-10-08 17:14:57 +00:00
Aaron Kc Hsu 075f242a44 Replace flash with arc html5 media recorder
fixes COMMS-1462 COMMS-1420 COMMS-1418 COMMS-1417

Test Plan
* Navigate to /accounts/1/settings and notice that there is
a new Arc in RCE feature flag
* Setup notorious using the gerrit project and README
* Navigate to /plugins/kaltura and make sure local
notorious and also js_uploader html5 is turned on
* Now go to discussions/assignments show and speedgrader
/courses/1/gradebook/speed_grader
* Make sure turning off and on the feature flag fits the
way we need this to work

Change-Id: I883b0bb33e9f4bff134b22b4a192884c9aa9db29
Reviewed-on: https://gerrit.instructure.com/162819
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
Product-Review: Steven Burnett <sburnett@instructure.com>
2018-10-02 02:58:15 +00:00
Ryan Shaw d4334bec3b [spec] ensure MutationObserver exists to fix flaky jest test
see: 
http://jenkins.instructure.com/job/canvas__linters-and-js/50286/testReport/junit/(root)/KeyboardShortcutModal%20appears%20when%20shift%20+%20_%20is%20pressed/KeyboardShortcutModal_appears_when_shift_____is_pressed/
for a bad example

Change-Id: I09e303fdad1d9d63f1bbf61ea01be9dff165d1d8
Reviewed-on: https://gerrit.instructure.com/166029
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-27 16:16:03 +00:00
Ryan Shaw 351ebd6652 upgrade react from 15.x to 16.x
closes: CORE-1874

test plan:
Now that the automated selenium & javascript specs pass for this the
last thing we need to do is to go manually click around and see if
anything breaks.

The best thing to do would be to open your browser console and look
for errors. Deprecation warnings or propType errors  or react warnings
are fine but if any actual errors get thrown that is something we want
to look into.

specific things to look at:
* all the gradezilla/gradebook/grading stuff (specifically things that
  have instUI <NumberInput>s and <Select>s)
  * look at the submission cell editor
  * the gb headers (especially make sure keyboard navigation works how
  it should)
  * moderated grading
  * grading perid edit page / enrollment terms
  * speedgrader
  * grading standards
  * gradebook history
* theme editor
* new discussions/announcements
* the new permissions page
* the dasboard
  * student planner
  * dashcards
* global nav trays
  * help menu
* assignment edit page
* account user/course search

Change-Id: I6a1fe7df9379d9c601eda932bd8cef9c06d10cd2
Reviewed-on: https://gerrit.instructure.com/163913
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-09-26 19:04:47 +00:00
Ryan Shaw 46a98181fb dowgrade format-message so canvas-planner works
if we allow format-message to upgrade, then `yarn extract` inside
canvas-planner will break.


test plan:
* cd packages/canvas-planner
* yarn extract
* it should work

Change-Id: Icb10b2ec8d63d4afd618aa0f21b918dab14e37fe
Reviewed-on: https://gerrit.instructure.com/165325
Reviewed-by: Mysti Sadler <mysti@instructure.com>
Product-Review: Mysti Sadler <mysti@instructure.com>
QA-Review: Mysti Sadler <mysti@instructure.com>
Tested-by: Jenkins
2018-09-20 23:57:16 +00:00
Clay Diffrient 873c7e76bb Bump tinymce-a11y-checker to 1.9.1
closes CORE-1838 CORE-1888

Test Plan:
  - Smoke test the a11y checker
  - Check out the changelog at https://github.com/instructure/tinymce-a11y-checker/releases/tag/v1.8.0
    and make sure those things work inside Canvas

Change-Id: I13507afaae53e0eeefbeb11a1972112373539dc1
Reviewed-on: https://gerrit.instructure.com/164357
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
2018-09-19 20:46:13 +00:00
Ryan Shaw 5590efa875 update react-redux so it can be used w/ react 16
we need all these:

v4.4.9
Update hoist-non-react-statics to 2.x
v4.4.8
Fix deprecation warnings with React 15.5.0
v4.4.7
Allow React 16 as peerDependency

test plan:
* pages that use redux should work the same as before and automated
  tests should pass

Change-Id: Id06bf4eaaa6f884996690889b442ad98584c78b0
Reviewed-on: https://gerrit.instructure.com/164990
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-19 14:14:18 +00:00
Ryan Shaw e73289e507 Yarn.lock: update all our npm dependencies
closes:  CORE-1909 

This is the result of running:
`yarn upgrade-and-dedupe`
and then fixing any specs/changes that needed to happen as a result of
the new versions

Test plan:
* automated tests should pass

Change-Id: I79ec63d8eb9d7bce4d48af0cff7cee369be58884
Reviewed-on: https://gerrit.instructure.com/164790
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-18 23:08:30 +00:00
Ryan Shaw aca3e04e7a Disable happypack for concurrent karma runs
If we are splitting up our specs and running different groups across
different cores, we don’t need to also use happypack to distribute
that work to multiple cores. In fact, if we do, it’ll be slower because
of cpu thrashing

Change-Id: If000c59d73d46961bffebacab9f7b0291a01bda6
Reviewed-on: https://gerrit.instructure.com/164889
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-18 22:35:43 +00:00
Ryan Shaw 23287c6969 react 16: get test-utils from react-dom/test-utils
closes: CORE-1890

from the react-addons-test-utils readme:

This package is deprecated as of version 15.5.0:

TestUtils have been moved to react-dom/test-utils

Change-Id: Ica0bb0c798aa80288d37b1810dc78eedad100d18
Reviewed-on: https://gerrit.instructure.com/164127
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-18 14:41:50 +00:00
Ryan Shaw 666b82253c make filePreview work w/ react 16
closes: CORE-1889

aka: combine into one es6 class so it can use React.PureComponent

this is because react 16 doesn’t have pureRenderMixin

test plan:
* the file preview page should work exactly as it did before

Change-Id: I64aa30653a82afb3e237a25d337137ed7c234858
Reviewed-on: https://gerrit.instructure.com/163914
Reviewed-by: Dan Minkevitch <dan@instructure.com>
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-17 20:25:55 +00:00
Ryan Shaw 8e57d0bcb2 replace react-addons-transition-group
closes: CORE-1875

from the react-addons-css-transition-group readme:

The code in this package has moved. We recommend you to use
CSSTransitionGroup from react-transition-group instead.

In particular, its version 1.x is a drop-in replacement for the last
released version of react-addons-css-transition-group.

Run npm install --save react-transition-group@1.x, and replace the
imports in your code:

test plan:
* the theme cards should have the exact same css transition effects
  as before

Change-Id: I33eb34c941bb0999cc600a3abe793e0603183b35
Reviewed-on: https://gerrit.instructure.com/163912
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-17 18:45:07 +00:00
Ryan Shaw 32667d33e2 upgrade react from 0.14.9 to 15.x
closes: CORE-1857 CORE-294
also closes: CORE-1856 CORE-294 CORE-1841 CORE-71 CORE-302 CORE-301
also closes: CORE-300 CORE-299 CNVS-34315 CORE-298 CORE-243 CORE-297
also closes: CORE-296 CORE-295

test plan:
now that the automated selenium & javascript specs pass for this the
last thing we need to do is to go manually click around and see if
anything breaks.

the best thing to do would be to open your browser console and look
for errors. deprecation warnings or propType errors  or react warnings
are fine but if any actual errors get thrown that is something we want
to look into.

specific things to look at:
* account user/course search
* all the gradezilla/gradebook/grading stuff (specifically things that
  have instUI <NumberInput>s)
  * look at the submission cell editor
  * the gb headers
  * moderated grading
* the stuff for adding external apps
* theme editor
* new discussions/announcements
* the new permissions page
* the dasboard
  * student planner
  * dashcards
* global nav trays
  * help menu

Change-Id: I0d71ffda08e306927616d3e976b09cd1775fba10
Reviewed-on: https://gerrit.instructure.com/163518
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-17 15:42:14 +00:00
Ryan Shaw 3a7d2e2713 upgrade react-token-input so it supports react 16
closes: CORE-1885

Test plan:
* make sure the token input that appears when you edit assignment
  due date Overrides on the assignment overrides page still works
  Like it did before. Here’s it’s original test plan:
new due dates selection UI
  - on assignments, quizzes & discussions pages
  - with DA on and off
  - assign various due dates/(un)lock dates
    to source sections, individuals, and everybody

  - these should create overrides that properly take
    students/sections and dates
  - validations should work for all dates as normal
    and not let empty overrides get created (with no
    students or sections)
  - the names of overrides should properly update as
    students change
  - as more overrides get created, saving assignments
    should not slow down significantly
  - the student/section selector should be intuitive


* the “new grading period set” form should work as it did before.
  Here’s it’s original test plan:

A new button "+ Add Grading Period Set" is on the
Grading Period Sets page. This allows a new set to
be named and associated with as many terms as needed.

To begin, visit the Grading page for an account
(e.g. /accounts/1/grading_standards) and click "+ Set of
Grading Period" and within this form ensure the following:

1. Given no name in the "Set name" field, when clicking
   the "Create" button a flash message is displayed and the
   set is not saved
2. Given no enrollment terms in the "Attach terms", when
   clicking the "Create" button a flash message is displayed
   and the set is not saved
3. Given a name and at least one attached enrollment term,
   when clicking the "Create" button an AJAX call successfully
   persists to the database and the new set is displayed on
   the page along with a successful flash message
4. When the form is open, the "+ Set of Grading Periods"
   button is disabled
5. When the form is in the process of creating a new set,
   the "Create" and "Cancel" button is disabled
6. Clicking close at any other time closes the form and
   re-enables the "+ Set of Grading Periods" button and
   all data in the form is cleared

Change-Id: Ibb0290202b5dcf00ec42a4bb6d1c3d2e3d7a3b2b
Reviewed-on: https://gerrit.instructure.com/164492
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-14 19:27:28 +00:00
Ryan Shaw 1348da53b9 Update `react-crop` dependency
closes: CORE-1886 CORE-1887

I forked react-crop, added it to the @instructure GitHub/npm group
converted all the React.createClass code to es6 classes and set it up
To use modern react/babel/webpack


Test Plan:

ensure Admin > <your account> > Settings > Enable Profiles and
User Avatars are checked
navigate to Account > Profile
using keyboard:
TAB (displays "skip to main content")
ENTER (focuses on the main content of the profile page
TAB (focuses avatar image)
ENTER (displays Select Profile Picture dialog)
TAB 4 times (focuses "choose a picture")
ENTER (displays system file open dialog)
Select a photo
The selected photo and crop-box are displayed and have focus
Use arrow keys to move the crop box around
Use shift-arrow keys to size the crop box
TAB twice to focus Save button
ENTER closes dialog
cropped image should be displayed on the profile page

Change-Id: I68647b3375c480b77d422e115d3ea8c92dd5b79f
Reviewed-on: https://gerrit.instructure.com/164443
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-14 17:08:42 +00:00
Ryan Shaw ec49145559 Upgrade react-modal so it works with react 16
I know I said that the way forward was to just not use react-modal
and use instUI modal instead but there are a bunch of things that _are_
Using it and I don’t want changing all those to be blockers for react16
if this will work.


I still want us to get rid of react-modal, just don’t want it to be a 
blocker for react 16


Test plan:
Things that use react-modal should still work the same as before. Check:
* the color picker used on the calendar sidebar
* the external apps stuff that has modals
* the file preview modal in files
* the “find appointment” modal in scheduler

Change-Id: I606eda110782cd3300fcbb2f8052681fa5048050
Reviewed-on: https://gerrit.instructure.com/164232
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-13 17:51:34 +00:00
Ryan Shaw d44185e430 react 16: use createReactClass for things that can’t be es6 classes
these components can’t be converted to the react es6 class syntax
because they use Mixins which aren’t supported by es6 classes.

Change-Id: I8541b08518cd335c7a711bab117efcda65ac6b2c
Reviewed-on: https://gerrit.instructure.com/164135
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-12 16:03:38 +00:00
Ryan Shaw 1441758ddd Upgrade react-dnd so it works w/ react 16
Closes: CORE-1871

The react-dnd commit that first added react 16 to its peerDeps
(https://github.com/react-dnd/react-dnd/commit/c6123fad317)
First appeared in v2.5.2 so we need at least that version
If we are going to use react 16

Test plan:
* dashboard card and discussion reordering should still work like they
  always have

Change-Id: I74b47949f3d0f7084c350d24a8de41139f535732
Reviewed-on: https://gerrit.instructure.com/164071
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-12 04:11:54 +00:00
Ryan Shaw a49723beab remove react-select-box, nothing uses it
from grepping around, it appears nothing uses this.

This will will make it easier to upgrade to react 16 since there is one
Less thing to keep track of

Test plan:
* can anybody else think of a place where this is used
* if not, removing this doesn’t change anything since nothing uses it

Change-Id: I1ebe3147bdef39342a0deb11ab145fb0740e4c28
Reviewed-on: https://gerrit.instructure.com/164051
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-11 22:15:43 +00:00
Ryan Shaw 4fcfeb828f put accidentally deleted comments back in package.json
Change-Id: I6b00f817afbf46c6cfa48ed0f389aede78c9c3f3
Reviewed-on: https://gerrit.instructure.com/163733
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-10 14:18:10 +00:00
Ryan Shaw e1454a761c add jest-canvas-mock to silence a bunch of warnings
without this we get a bunch of warnings from our jest tests like:
Error: Not implemented: HTMLCanvasElement.prototype.getContext …

test plan:
you shouldn’t see those ^ messages in the jest logs

Change-Id: Ib257d4a6b40f4b4118f273729080e722afa3432a
Reviewed-on: https://gerrit.instructure.com/163515
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-09-07 15:18:15 +00:00
Ryan Shaw d5681a84e8 get back on the release version of instUI (5.25.0)
this sets us back up to track the latest actual
release instead of the “rc” version

test plan:
* automated tests should pass

Change-Id: I9e668828acc99bcb49c7071ca0ccb898c55f0d99
Reviewed-on: https://gerrit.instructure.com/162867
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-08-31 19:43:51 +00:00
Ed Schiebel c5c50c760c Pass correct locale to Planner
Sometimes ENV.LOCALE and ENV.MOMENT_LOCALE are different
(zh-Hans v zh-cn or mi v mi-nz). We were passing the former to planner,
but moment needs the full locale, including language and region
identifiers, and formatMessage copes with the full locale just fine,
so we really need to pass in the latter or moment eventually
blows up.

So mi-nz month names would successfully parse, had to both bump our
version of moment and tweak the canvas customized mi-nz locale data.

to test, you'll have to run yarn to update moment, then build with
RAILS_LOAD_ALL_LOCALES=1 yarn build

Note on the changes to timezoneSpec.js:
- some of the specs were parsing dates like "Mon, Aug 3", which are
  being interpreted in the current year, when Aut 3 is not a Monday.
  Resolved this by using MockDate to pretend today is 2/1/2015
- moment does not always interpret the Chinese characters for evening as
  implying PM.  I'm assuming canvas will never need that particular
  construct and commented out the failing string.
- there's one date-time that's getting the date totally wrong.
- Fixed grammatically incorrect instances of
  '8月 3, 2015' to ''8月 3日, 2015'
- fix cases where the year is coming after the month and day, which
  would never really happen

fixes ADMIN-1331

test plan:
  - have a student in course so planner is enabled.
  - go to /profile/settings and Edit
  - change the Language to Reo Māori (Aotearoa) and "Update Settings"
  - go to the planner dashboard
  - click on + to create a new todo
  > expect you can create a todo.

If you want, you can repeat with any of the languages listed in the
ticket just to prove ^that wasn't a fluke.

Change-Id: I9ba069ef61529088ab92271d7857998df6bbc409
Reviewed-on: https://gerrit.instructure.com/161206
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
Reviewed-by: Mysti Sadler <mysti@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2018-08-27 20:51:33 +00:00
Ryan Shaw 354bf2df06 upgrade enzyme to 3.x
Closes: CORE-1758

After this commit, if you or your team have any specs that import
from old-enzyme-2.x-you-need-to-upgrade-this-spec-to-enzyme-3.x-by-importing-just-enzyme
That means you need to upgrade those spec files to use the new enzyme
by changing that to `import {mount, shallow, whatever} from ‘enzyme’`.
Refer to http://airbnb.io/enzyme/docs/guides/migration-from-2-to-3.html
for details

Test plan:
* all linters-and-js-specs should pass
* since this only effects js specs, that is all that really matters. 
  no app code to QA

Change-Id: I46c5d815e9d95683832d70b64e31526b943d07e5
Reviewed-on: https://gerrit.instructure.com/135136
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-08-23 14:44:23 +00:00
Ryan Shaw 925c22a7fc Move the pretranslated babel stuff into own pkg
closes: CORE-1725

This is so we don’t have to pull in all of the deps of quiz-presets
just to do the pretranslated stuff for canvas-rce. because without
this, it was going to be a pain to deal with the version of
`@instructure/ui-presets` that `quiz-presets` wanted if we wanted to
always be on the latest instUI rc.

It also makes it so we have to yarn install less stuff into node_modules

Test plan:
* before checking this out, go to packages/canvas-rce and run
  `yarn build:all`
* run `find -s lib -type f -exec md5sum {} \; | md5sum`
* check this out, run `yarn` then run `yarn build:all` again
* run `find -s lib -type f -exec md5sum {} \; | md5sum` again
* the 2 checksums should match, meaning they produced exactly the
  same code


Change-Id: Ife3116b43cae51bcd92c725ab68c6d1fd621dce5
Reviewed-on: https://gerrit.instructure.com/160832
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-08-17 20:34:19 +00:00
Ryan Shaw ced4d9b501 Upgrade instUI to 5.24.0 & ally-checker to 1.7.0
Closes: CORE-1697

Test plan:
* do a basic regression test of things that use instUI components.
  Specifically: the new developer keys page and the gradebook grade
  details tray since those had the most specs that needed to be fixed
* do a basic regression test of the a11y checker to make sure the
  instUI components work the same as before

Change-Id: Ie88c4fc1b01eadeecceb7536944da986e37bf3dd
Reviewed-on: https://gerrit.instructure.com/156473
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-08-17 20:33:49 +00:00
Ryan Shaw e8a88cceea A script to just update instUI
Closes: CORE-1709

This is what our Jenkins job to pull in every instui RC commit will use

Test plan:
* run `yarn upgrade-instructure-ui`
* it should make a commit that has new entries in yarn.lock for all the
  instUI packages that uses the latest rc version on the npm registry
* it should not affect anything else besides yarn.lock

Change-Id: I78cce6e801015819c4e4b27e26ede352deceebb9
Reviewed-on: https://gerrit.instructure.com/160435
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-08-15 20:21:10 +00:00
Ryan Shaw fd33fdf2b5 Upgrade yarn from 1.7.0 to 1.9.4
if you are having problems after this commit you need to either:
`brew upgrade yarn` Or `apt-get install yarn` or rebuild your docker
container or do whatever else you use to manage software versions

Change-Id: Ie338a24544bd4677f68222b69cfa178c0ef21ca9
Reviewed-on: https://gerrit.instructure.com/160616
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-08-14 16:11:54 +00:00
Ryan Shaw 6f910dbc43 treat anything in gems/plugins/* as a workspace
Fixes: https://github.com/instructure/canvas-lms/issues/1323

This lets open source users continue putting their own plugins with npm 
deps In gems/plugins. They will still have to have a forked version
Of yarn.lock though since that will be different for them than a
“Default” install.

Also, this means that everyone will see a bunch of warnings like this
Every time they yarn install:
Warning: gems/plugins/academic_benchmark is a dir… no package.json
Warning: gems/plugins/account_reports is a dir.. has no package.json
Warning: gems/plugins/canvas_geoip is a …, but has no package.json
Warning: gems/plugins/demo_site is a directory, but has no package.json
Warning: gems/plugins/instructure_misc_plugin is … has no package.json
Warning: gems/plugins/moodle_importer is a d.., but has no package.json
Warning: gems/plugins/qti_exporter is a dir…, but has no package.json
Warning: gems/plugins/respondus_soap_endpoint is … no package.json
Warning: gems/plugins/simply_versioned is a …, but has no package.json


Test plan:
* yarn install should work

Change-Id: Ie65c8faf8b1022210cfb7eda8c25107facfe83b5
Reviewed-on: https://gerrit.instructure.com/158043
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-07-20 21:20:56 +00:00
Ryan Shaw e09c9f9afa Downgrade node-sass to fix styling of flashMessage
Fixes: SIS-3125, COMMS-1328

In g_instructure.scss, we have some scss that looks like:

#flash_message_holder, #flash_message_buffer {
  …
  li:not(.ic-flash-info, .ic-flash-success, .ic-flash-warning, .ic-flash-error) {
    …

In recent versions of node-sass that gets output as:
#flash_message_holder li, 
#flash_message_buffer li {
  ...
}

Instead of how it should be:
#flash_message_holder li:not(.ic-flash-info, .ic-flash-success, .ic-flash-warning, .ic-flash-error), 
#flash_message_buffer li:not(.ic-flash-info, .ic-flash-success, .ic-flash-warning, .ic-flash-error) {
  ...
}

Change-Id: I6aad4a6793228c97114220f5f2b2ec85ac9ae61d
Reviewed-on: https://gerrit.instructure.com/157921
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-07-19 19:46:03 +00:00
Clay Diffrient 2dc1d7fa86 Add a way to generate better js coverage
This should pick up coverage from both karma and jest
in Canvas proper.  It should also pick up coverage from anything under
packages/*

closes CORE-1265

Test Plan:
  - Run `COVERAGE=true yarn test`
     - Coverage reports (coverage-final.json) should generate in all
       packages such as (canvas-planner) as well as in coverage-karma
       and coverage-jest
  - Run `yarn run test:coverage`
     - coverage-js folder should be generated.  Opening index.html
       should show the full coverage report
  - Remove coverage-{js, karma, jest} and
    packages/canvas-planner/coverage as well as .nyc_output to get back
    to a clean state
  - Run `RUN_TESTS_FIRST=true yarn run test:coverage`
     - All tests should run and generate the appropriate report just
       like the last time in coverage-js

Change-Id: I50744b8977e0683e079af5bdd2865dbcd6ad9066
Reviewed-on: https://gerrit.instructure.com/146098
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Clay Diffrient <cdiffrient@instructure.com>
2018-07-17 14:19:03 +00:00
Ryan Shaw 4e012e178e Upgrade tinymce to 4.8.0
Fixes: CORE-1518

Test plan:
when using newest version of Microsoft Edge:
In the RCE, add a table.
After adding the table, attempt to edit the table.
You should be able to edit tables using the RCE when using MS Edge

Change-Id: Ibbc38ac11c6fbb808a31e16a84fe24a87a979e5b
Reviewed-on: https://gerrit.instructure.com/157456
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-07-17 02:04:59 +00:00
Ryan Shaw f9d51ffc39 Remove html-react-parser dependency
‘html-react-parser’ causes yarn all kinds of fuss when it tries to 
update stuff because it says it wants at least react 15. This approach 
does the same thing we were using it for but without that package.json
dependency. This fixes some problematic stuff in our yarn.lock


Test plan:
* the permissions page should have the same perf as it did before
  (Or slightly better)

Change-Id: Id7ce3e1b5e51c077b9d51ffa15ac94ee158f3ee5
Reviewed-on: https://gerrit.instructure.com/156895
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-07-16 19:04:47 +00:00
Ryan Shaw 6774f9f22c Upgrade tinymce to latest (4.7.13)
closes: CORE-1620

while I was upgrading all the package.json dependencies I noticed that
that the version of tinyMCE we are using is out-of-date

test plan:
* automated tests that deal with tinyMCE should pass
* smoke test the editor to make sure it looks/works the same as before

Change-Id: Ia7913f195d0a61aee2ac770ebcbf303ffad794fa
Reviewed-on: https://gerrit.instructure.com/156310
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2018-07-10 19:06:58 +00:00