diff --git a/.github/workflows/specs.yml b/.github/workflows/specs.yml new file mode 100644 index 0000000000..a9dd5301ef --- /dev/null +++ b/.github/workflows/specs.yml @@ -0,0 +1,37 @@ +name: Run rspec tests + +on: + - pull_request + - push + - workflow_dispatch + +jobs: + a11y: + runs-on: ubuntu-latest + continue-on-error: true + # env: + # BUNDLE_GEMFILE: utilities/Gemfile + strategy: + matrix: + # The files in /bjc-r/course w/o a .html extension + # These correspond to rspec tags for each test run. + course: + - bjc4nyc + - bjc4nyc.es + - sparks + - bjc4nyc_teacher + - sparks-teacher + suite: + - wcag20 + - wcag22 + steps: + - uses: actions/checkout@v3 + - uses: ruby/setup-ruby@v1 + with: + # ruby-version: 3.2.2 + bundler-cache: true + - name: a11y tests + run: bundle exec rspec utilities/specs --tag ${{ matrix.course }}_${{ matrix.suite }} + - name: summary + if: always() + run: ruby utilities/specs/spec_summary.rb diff --git a/.gitignore b/.gitignore index 617a75c0d2..90526c0a91 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ *.log ._* .#* +tmp/ # IDE-Specific Files .project diff --git a/.rspec b/.rspec new file mode 100644 index 0000000000..08cae59ec5 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +-f progress -f documentation --out tmp/rspec_output.txt -f json --out tmp/rspec_output.json -f html --out tmp/rspec_output.html diff --git a/Gemfile b/Gemfile deleted file mode 120000 index e9e778af86..0000000000 --- a/Gemfile +++ /dev/null @@ -1 +0,0 @@ -utilities/build-tools/Gemfile \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..6dbbaa8550 --- /dev/null +++ b/Gemfile @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +# This Gemfile is for tests inside this repo. +# The `build-tools` directory has its own Gemfile for the build tools. + +# Install with: bundle install +source 'https://rubygems.org' + +ruby file: '.ruby-version' + +gem 'axe-core-capybara' +gem 'axe-core-rspec' +gem 'capybara' +gem 'capybara-screenshot' +gem 'nokogiri' +gem 'rack-jekyll' +gem 'rspec' +gem 'selenium-webdriver' +gem 'webdrivers' +gem 'webrick' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 120000 index 969152c473..0000000000 --- a/Gemfile.lock +++ /dev/null @@ -1 +0,0 @@ -utilities/build-tools/Gemfile.lock \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000000..b920e8339b --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,235 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + axe-core-api (4.9.1) + dumb_delegator + virtus + axe-core-capybara (4.9.1) + axe-core-api (= 4.9.1) + dumb_delegator + axe-core-rspec (4.9.1) + axe-core-api (= 4.9.1) + dumb_delegator + virtus + axiom-types (0.1.1) + descendants_tracker (~> 0.0.4) + ice_nine (~> 0.11.0) + thread_safe (~> 0.3, >= 0.3.1) + bigdecimal (3.1.8) + capybara (3.40.0) + addressable + matrix + mini_mime (>= 0.1.3) + nokogiri (~> 1.11) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (>= 1.5, < 3.0) + xpath (~> 3.2) + capybara-screenshot (1.0.26) + capybara (>= 1.0, < 4) + launchy + childprocess (5.0.0) + coercible (1.0.0) + descendants_tracker (~> 0.0.1) + colorator (1.1.0) + concurrent-ruby (1.3.3) + descendants_tracker (0.0.4) + thread_safe (~> 0.3, >= 0.3.1) + diff-lcs (1.5.1) + dumb_delegator (1.0.0) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.0-aarch64-linux-gnu) + ffi (1.17.0-aarch64-linux-musl) + ffi (1.17.0-arm-linux-gnu) + ffi (1.17.0-arm-linux-musl) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86-linux-gnu) + ffi (1.17.0-x86-linux-musl) + ffi (1.17.0-x86_64-darwin) + ffi (1.17.0-x86_64-linux-gnu) + ffi (1.17.0-x86_64-linux-musl) + forwardable-extended (2.6.0) + google-protobuf (4.27.1) + bigdecimal + rake (>= 13) + google-protobuf (4.27.1-aarch64-linux) + bigdecimal + rake (>= 13) + google-protobuf (4.27.1-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.27.1-x86-linux) + bigdecimal + rake (>= 13) + google-protobuf (4.27.1-x86_64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.27.1-x86_64-linux) + bigdecimal + rake (>= 13) + http_parser.rb (0.8.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + ice_nine (0.11.2) + jekyll (4.3.3) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (>= 0.3.6, < 0.5) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + launchy (3.0.1) + addressable (~> 2.8) + childprocess (~> 5.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + matrix (0.4.2) + mercenary (0.4.0) + mini_mime (1.1.5) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-arm-linux) + racc (~> 1.4) + nokogiri (1.16.6-arm64-darwin) + racc (~> 1.4) + nokogiri (1.16.6-x86-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (5.1.1) + racc (1.8.0) + rack (1.6.13) + rack-jekyll (0.5.0) + jekyll (>= 1.3) + listen (>= 1.3) + rack (~> 1.5) + rack-test (2.1.0) + rack (>= 1.3) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + regexp_parser (2.9.2) + rexml (3.3.2) + strscan + rouge (4.3.0) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass-embedded (1.77.5-aarch64-linux-gnu) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-aarch64-linux-musl) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-arm-linux-gnueabihf) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-arm-linux-musleabihf) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-arm64-darwin) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86-linux-gnu) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86-linux-musl) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86_64-darwin) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86_64-linux-gnu) + google-protobuf (>= 3.25, < 5.0) + sass-embedded (1.77.5-x86_64-linux-musl) + google-protobuf (>= 3.25, < 5.0) + selenium-webdriver (4.10.0) + rexml (~> 3.2, >= 3.2.5) + rubyzip (>= 1.2.2, < 3.0) + websocket (~> 1.0) + strscan (3.1.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + thread_safe (0.3.6) + unicode-display_width (2.5.0) + virtus (2.0.0) + axiom-types (~> 0.1) + coercible (~> 1.0) + descendants_tracker (~> 0.0, >= 0.0.3) + webdrivers (5.3.1) + nokogiri (~> 1.6) + rubyzip (>= 1.3.0) + selenium-webdriver (~> 4.0, < 4.11) + webrick (1.8.1) + websocket (1.2.10) + xpath (3.2.0) + nokogiri (~> 1.8) + +PLATFORMS + aarch64-linux + aarch64-linux-gnu + aarch64-linux-musl + arm-linux + arm-linux-gnu + arm-linux-gnueabihf + arm-linux-musl + arm-linux-musleabihf + arm64-darwin + x86-linux + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + axe-core-capybara + axe-core-rspec + capybara + capybara-screenshot + nokogiri + rack-jekyll + rspec + selenium-webdriver + webdrivers + webrick + +RUBY VERSION + ruby 3.2.2p53 + +BUNDLED WITH + 2.5.6 diff --git a/css/bjc.css b/css/bjc.css index c08c088b0c..5524c48806 100755 --- a/css/bjc.css +++ b/css/bjc.css @@ -10,6 +10,7 @@ h4, h5, h6 { font-family: "work_sansregular", "Open Sans", sans-serif; + color: #000; } .anchor { @@ -18,12 +19,22 @@ h6 { } a:visited { - color: #248694; + color: #106070; /* darkened for a11y. */ + /* color: #248694; */ } a, .dialogue a { - color: #2a6496; + /* color: #28499F; */ + color: #3056AA; + /* color: #2a6496; */ + /* TODO-A11Y: We need to find better contrasting colors, or make links visual. */ + /* text-decoration: underline; */ +} + +a.btn, +.dialogue a.btn { + text-decoration: none } /* development comments are hidden by default. @@ -253,7 +264,7 @@ var { } .todo:before { - font-size: 18px; + font-size: 20px; font-weight: bold; } @@ -332,6 +343,32 @@ img.noshadow { filter: none; } +/*** OPEN/CLOSE Sections */ +/* This is the text that allows you to expand/collapse contet. */ +summary.disclosure-heading { + font-weight: bold; + font-size: 14pt; + cursor: pointer; + color: #285a8c; +} + +details > summary::after { + content: " ▸"; + font-size: 1.2rem; + text-decoration: none; +} + +details[open] > summary::after { + content: " ▾"; + font-size: 1.2rem; + text-decoration: none; +} + +/* Hide Safari's disclosure triangle before the text. */ +summary::-webkit-details-marker { + display: none; +} + /* Used in teaching guide */ .apStandards, .Standards { @@ -426,7 +463,7 @@ img.noshadow { } .atwork, .atworkFullWidth { - background-color: #fcc589; + background-color: #fcc890; } .vocab, .vocabBig, @@ -477,7 +514,6 @@ div.comment, } .forYouToDo:before, -.forYouToDoHeader, .ifTime:before, .dialogue:before, .takeItFurther:before, @@ -495,7 +531,7 @@ div.comment, .vocabSummary ):not(.pseudop):not(.bordered-table), .time:before { - font-size: 18px; + font-size: 20px; font-weight: bold; line-height: 2.5em; } @@ -540,10 +576,6 @@ div.comment, width: 9em; } -.forYouToDoHeader { - text-indent: -40px; -} - .forYouToDo { margin-bottom: 0.5em; } @@ -727,6 +759,11 @@ html[lang="es"] .time:before { content: "Si tienes poco tiempo, puedes avanzar..."; } +/* Orange blobs with text overlays. */ +.saveAs { + color: #333; +} + div.saveAs img { position: relative; z-index: 1; @@ -737,7 +774,6 @@ div.saveAs span.text { margin-left: 182px; padding-top: 1.05em; z-index: 2; - color: #333; } html[lang="es"] div.saveAs span.text { @@ -745,7 +781,6 @@ html[lang="es"] div.saveAs span.text { margin-left: 211px; padding-top: 1.13em; z-index: 2; - color: #333; } div.newProject span.text { @@ -753,7 +788,6 @@ div.newProject span.text { margin-left: 323px; padding-top: 1.05em; z-index: 2; - color: #333; } html[lang="es"] div.newProject span.text { @@ -761,7 +795,6 @@ html[lang="es"] div.newProject span.text { margin-left: 445px; padding-top: 1.18em; z-index: 2; - color: #333; } /* Gifffer Library */ @@ -1049,7 +1082,8 @@ table.videos td { /* TODO: Refactor to use bs collapse + delete arrows */ a.expansion-menu h4, a.expansion-menu { - color: #2a6496; + color: #28499F; + /* color: #2a6496; */ } a.expansion-menu:visited h4, a.expansion-menu:visited { @@ -1098,3 +1132,17 @@ div.index-letter-target p { div.index-letter-target li { margin-left: 25px; } + + +/* A little rounded rect showing whatever is specified as the background color. + Use in HTML as
Abra una nueva pestaña o ventana y vaya a http://snap.berkeley.edu/sign_up.
- -Después de crear la cuenta, vuelve a tu ventana de Snap! e inicia sesión con tu nuevo nombre de usuario y contraseña. Haz clic en el menú Nube y selecciona "Iniciar sesión..."
-
Podrás cambiar tu contraseña en cualquier momento desde el menú Nube, .
-Para guardar tu proyecto:
-Recuerda cerrar sesión en Snap! (utilizando el menú Nube) al terminar tu trabajoen una computadora pública.
-Después de crear la cuenta, vuelve a tu ventana de Snap! e inicia sesión con tu nuevo nombre de usuario y contraseña. Haz clic en el menú Nube () y selecciona "Iniciar sesión..."
On this page, you'll learn how to save Snap! projects.