Knapsack
web.dev
Knapsack | web.dev | |
---|---|---|
5 | 148 | |
507 | 3,547 | |
0.6% | - | |
3.4 | 9.0 | |
3 months ago | about 2 months ago | |
Ruby | Nunjucks | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Knapsack
-
Ask HN: What is the most impactful thing you've ever built?
I've created a knapsack ruby gem for CI parallelisation that has over 122 million downloads. Primarily due to the fact, Gitlab is using it.
I spin off https://knapsackpro.com from the knapsack gem and we are helping our customers run fast CI builds.
- Run 1 hour test suite in 2 min with optimal parallelisation on existing CI infra
-
Testing Ruby on Rails on Github Actions with RSpec
name: Main on: [push] jobs: test: runs-on: ubuntu-latest # If you need DB like PostgreSQL, Redis then define service below. # https://github.com/actions/example-services/tree/master/.github/workflows services: postgres: image: postgres:10.8 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: "" POSTGRES_DB: postgres ports: - 5432:5432 # needed because the postgres container does not provide a healthcheck # tmpfs makes DB faster by using RAM options: >- --mount type=tmpfs,destination=/var/lib/postgresql/data --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 redis: image: redis ports: - 6379:6379 options: --entrypoint redis-server # https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix strategy: fail-fast: false matrix: # [n] - where the n is a number of parallel jobs you want to run your tests on. # Use a higher number if you have slow tests to split them between more parallel jobs. # Remember to update the value of the `ci_node_index` below to (0..n-1). ci_node_total: [8] # Indexes for parallel jobs (starting from zero). # E.g. use [0, 1] for 2 parallel jobs, [0, 1, 2] for 3 parallel jobs, etc. ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7] env: RAILS_ENV: test GEMFILE_RUBY_VERSION: 2.7.2 PGHOST: localhost PGUSER: postgres # Rails verifies the time zone in DB is the same as the time zone of the Rails app TZ: "Europe/Warsaw" steps: - uses: actions/checkout@v2 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: # Not needed with a .ruby-version file ruby-version: 2.7 # runs 'bundle install' and caches installed gems automatically bundler-cache: true - name: Create DB run: | bin/rails db:prepare - name: Run tests env: KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: ${{ secrets.KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC }} KNAPSACK_PRO_CI_NODE_TOTAL: ${{ matrix.ci_node_total }} KNAPSACK_PRO_CI_NODE_INDEX: ${{ matrix.ci_node_index }} KNAPSACK_PRO_LOG_LEVEL: info # if you use Knapsack Pro Queue Mode you must set below env variable # to be able to retry CI build and run previously recorded tests # https://github.com/KnapsackPro/knapsack_pro-ruby#knapsack_pro_fixed_queue_split-remember-queue-split-on-retry-ci-node KNAPSACK_PRO_FIXED_QUEUE_SPLIT: true # RSpec split test files by test examples feature - it's optional # https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true run: | bundle exec rake knapsack_pro:queue:rspec
-
How to run fast RSpec tests on CircleCI with parallel jobs and have nice JUnit XML reports in CircleCI web UI
# Ruby CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-ruby/ for more details # version: 2 jobs: build: parallelism: 10 # https://circleci.com/docs/2.0/configuration-reference/#resource_class resource_class: small docker: # specify the version you desire here - image: circleci/ruby:2.7.1-node-browsers environment: PGHOST: 127.0.0.1 PGUSER: my_db_user RAILS_ENV: test # Split slow RSpec test files by test examples # https://knapsackpro.com/faq/question/how-to-split-slow-rspec-test-files-by-test-examples-by-individual-it KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES: true # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ - image: circleci/postgres:10.6-alpine-ram environment: POSTGRES_DB: my_db_name POSTGRES_PASSWORD: "" POSTGRES_USER: my_db_user # Rails verifies Time Zone in DB is the same as time zone of the Rails app TZ: "Europe/Warsaw" - image: redis:6.0.7 working_directory: ~/repo environment: TZ: "Europe/Warsaw" steps: - checkout # Download and cache dependencies - restore_cache: keys: - v2-dependencies-bundler-{{ checksum "Gemfile.lock" }}-{{ checksum ".ruby-version" }} # fallback to using the latest cache if no exact match is found - v2-dependencies-bundler- - run: name: install ruby dependencies command: | bundle install --jobs=4 --retry=3 --path vendor/bundle - save_cache: paths: - ./vendor/bundle key: v2-dependencies-bundler-{{ checksum "Gemfile.lock" }}-{{ checksum ".ruby-version" }} # Database setup - run: bin/rails db:prepare - run: name: run tests command: | export CIRCLE_TEST_REPORTS=/tmp/test-results mkdir $CIRCLE_TEST_REPORTS bundle exec rake "knapsack_pro:queue:rspec[--format documentation --format RspecJunitFormatter --out tmp/rspec.xml]" # collect reports - store_test_results: path: /tmp/test-results - store_artifacts: path: /tmp/test-results destination: test-results
-
Six things you should consider while designing a test architecture
One, the interesting out-of-the-box solution is Knapsack Pro. It helps run your tests in a parallel efficient way.
web.dev
-
Building a realtime chat app with Next.js and Vercel
Before we start creating pages in our application, it's important to understand how Next.js renders content. The framework supports multiple rendering methods including server-side rendering (SSR), static site rendering (SSG), and client-side rendering (CSR). There are many pros and cons to each rendering method (too many to cover in this post) so if these concepts are new to you, Google’s web.dev site has a very good introduction to rendering on the web that can help you understand rendering options.
-
Navigating the Waters of Core Web Vitals in 2024
The lifecycle of an interaction. Source: web.dev
-
How hard has code splitting been in your experience?
Probably not, it's the CSS used so far, so if there are elements you've not interacted with, that's an issue. This web.dev article gives some tools you can use https://web.dev/articles/extract-critical-css
-
Google have removed RSS support from their developer blogs
I noticed the same for Google's site https://web.dev/
The last article pushed to the feed was "Changes to the web.dev infrastructure" few months ago https://web.dev/blog/webdev-migration
The feed still there but with no updates https://web.dev/feed.xml and on the site you can see new articles published.
Is sad that on a infrastructure revamp of a modern site, the RSS feed was left out of the features list (at least for now).
-
How do websites have a prompt on unsupported browsers?
Upon testing on Firefox and Mi Browser, there was no triggering of the BeforeInstallPrompt event, as expected. However, I noticed that web.dev manages to display a prompt on these browsers, even though they theoretically lack support for the BeforeInstallPrompt event.
-
StackOverflow alternatives for web developers
web.dev, maintained by Google, including posts by Chrome developers and their co-workers,
-
Progressive vs. Incremental Rendering/(Re)Hydration
In a old web.dev articleI came across the word "Incremental (Re)Hydration" which is linked to a Glimmer.js-Blog post (also called "Incremental Rendering" there) confuses me. Is Incremental (Re)Hydration the same as Progressive (Re)Hydration? Reading the Glimmer-Blog article it seems so, but in the web.devarticle it seems to be something different.
-
Staying up to date with the industry with newsletters
Web.dev newsletter - though it's not a weekly newsletter and it's only content from web.dev (though really high quality content)
-
Is it possible to get into coding at 21 with no qualifications self taught?
Just open up a text edi web developers are self-taught. a website. That's what I did. Some people like this: https://web.dev
- Ya saben a donde anotarse si la quieren pegar en IT.
What are some alternatives?
Parallel Tests - Ruby: 2 CPUs = 2x Testing Speed for RSpec, Test::Unit and Cucumber
vanilla-extract - Zero-runtime Stylesheets-in-TypeScript
vcr - Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
lighthouse - Automated auditing, performance metrics, and best practices for the web.
Spring - Rails application preloader
TheAnnoyingSite.com - The Annoying Site a.k.a. "The Power of the Web Platform"
timecop - A gem providing "time travel", "time freezing", and "time acceleration" capabilities, making it simple to test time-dependent code. It provides a unified method to mock Time.now, Date.today, and DateTime.now in a single call.
lite-youtube-embed - A faster youtube embed.
Wrong - Wrong provides a general assert method that takes a predicate block. Assertion failure messages are rich in detail.
bedrock - WordPress boilerplate with Composer, easier configuration, and an improved folder structure
Appraisal - A Ruby library for testing your library against different versions of dependencies.
VuePress - 📝 Minimalistic Vue-powered static site generator