@leanup/cli-cucumber

This module contains the cucumber feature for the @leanup/cli.


Keywords
cucumber
License
Apache-2.0
Install
npm install @leanup/cli-cucumber@1.1.0-rc.263

Documentation


Make things pure ... to become lean.


license lernajs prettier @leanup/cli

leanup js

The @leanup ecosystem stands for a lightweight and pure way for application development in JavaScript/TypeScript.

Motivation

  • Learnability
  • Controllability
  • Universality
  • Flexibility
  • Scalability
  • Durability
  • Transparency

Our home stories

In 2021

Transpilers

We switched from Babel to esbuild and from esbuild to swc (without Angular and Vue with proprietary template notation). And we can switch again if we want.

The performance of esbuild and swc are almost twice as fast as with the classic configuration. But there is currently no noticeable difference in performance between esbuild and swc.

Frameworks

We added two more frameworks (Lit and Solid) without any problems, without having to change the basic stack.

We have switched our Demo-Template from Bootstrap to Tailwindcss and from Tailwindcss to WindiCSS and now use the automatic application-specific CSS generation.

Bundlers

We tried two new bundlers (Vite and Snowpack) and integrated them for most frameworks. Alternatively, they can be installed alongside or instead of webpack.

What makes the difference

Stop the transitive knowledge.

We use the minimal configuration and build no overhead stuff on top of the popular tools and make every native command transparent.

Principles

  • convention over configuration
  • pure commands under the hood
  • don't repeat yourself
  • following the generic instead of the influenced way
  • keep the dependencies always up to date

Arguments

The arguments for and against this concept are documented here:

Pro

  • select only one pure and popular tool for each use case (e.g. bundling, unit-test)
  • there are extensible configuration files for each tool
  • due to the flat dependencies we can always stay up to date
  • the CLI bundles all the necessary tools in a portable/scalable way
  • the risk to get vulnerabilites in dependencies is lower
  • leanup's own code is kept to a minimum

Contra

  • please give feedback
  • please show us your perspective

Demo's

There are some working examples:

Tools

Tool/Technology Description Status Note Rating
TypeScript Language βœ”οΈ ready typescript
Webpack Bundler βœ”οΈ ready webpack
Snowpack Bundler βŒ› in progress webpack
Vite Bundler βŒ› in progress webpack
esbuild Transpiler βœ”οΈ ready esbuild
swc Transpiler βœ”οΈ ready swc
Babel Transpiler βœ”οΈ ready @babel/core
Mocha Unit-Test-Runner βœ”οΈ ready mocha
Chai Assertion βœ”οΈ ready chai
Sinon Mocking βœ”οΈ ready sinon
NYC Code-Coverage βœ”οΈ ready nyc
ESLint Code-Checker βœ”οΈ ready eslint
Nightwatch.js E2E-Test-Runner βœ”οΈ ready nightwatch
Allsure Report βœ”οΈ ready
Cucumber BDD βœ”οΈ ready cucumber
robotframework BDD βŒ› will be evaluated
Storybook Documentation βŒ› in progress storybook
OpenAPI API βœ”οΈ ready
GraphQL API βœ”οΈ ready graphql
Workbox PWA βœ”οΈ ready workbox
Lerna Mono-Repo βœ”οΈ ready lerna
Ant-Design Design-System βœ”οΈ proved antd
Bootstrap Design-System βœ”οΈ proved bootstrap
Material Design-System βœ”οΈ proved @material/textfield
Tailwindcss Design-System βœ”οΈ proved tailwindcss
WindiCSS Design-System βœ”οΈ proved tailwindcss
Nexus IQ Vulnerabiliy-Gate βœ”οΈ ready
Less CSS βœ”οΈ ready less
Sass CSS βœ”οΈ ready sass
PostCSS CSS βœ”οΈ ready postcss
TSArch Architecture βŒ› in progress hint
Webhint Webhint βœ”οΈ moved *** hint
TestCafe E2E-Test-Runner βŒ› will be evaluated **** testcafe
TSLint Code-Checker ❌ removed ** tslint
Cypress E2E-Test-Runner ❌ excluded * cypress

* Arguments agains Cypress:

  • reinvent wheel
    • detect css selectors
    • BDD test syntax
    • principals
  • large tooling
  • a lot of binaries
  • many dependencies
  • ci integration vs selenium hub

It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.

** TSLint is deprecated.

*** Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like VSCode webhint.

**** TestCafe The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.

Ecosystem structure

Vanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.

Frameworks

Vanilla Java-/TypeScript are supported by default. That means for example custom elements and any plain Java-/TypeScript code.

The selection of the following frameworks depends in parts on the following references:

Currently the following framework extensions are available:

Extensions

A separate package contains some nice but not required addons for webpack.

Thinks

There a separate packages for important application features.

Alternatives

  • Angular @angular/cli
  • Neutrino neutrino
  • Rome neutrino