Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Designs can be tested too! Cactus is a CSS testing framework proof of concept.
It ensures that you always have the same CSS styling for DOM elements that you care about.
Install the Cactus gem manually or include it in your Rails Gemfile.
gem install cactus
Add jQuery to application.js (or any manifest file)
//= require jquery
Add the Cactus helper in your application layout, just before the body
closing tag (assuming haml).
= cactus
Finally, add some CSS specs (written in JavaScript) in public/cactus_spec
. Files need to end with spec.js.
Cactus.expect(".header", "font-size").toEqual("24px");
Cactus.expect("p", "font-size").toEqual("12px");
The Cactus helper in your application layout includes Cactus.js and all spec files located in public/cactus_spec/
on every page load in the Dev and Test env; the helper will not output anything when in other (Prod, Staging etc) environments.
Once the files are included, the specs will be verified against the current page DOM, and results will be displayed.
Write your specs in JavaScript, and place them in the public/cactus_spec/
folder.
You can make an expectation either on a specific element or a group of elements.
expect
Cactus.expect(".header", "font-size").toEqual("24px");
The expect
method requires a tag name and an attribute. All elements that resolve to the tag name will be tested.
The expectations are chained to matchers for verification of CSS styling.
toEqual
Cactus.expect(".header", "font-size").toEqual("24px");
This tests for total equality.
toContain
Cactus.expect(".header", "font-family").toContain("Helvetica");
This tests for partial equality, using a REGEX constructed from the pass in value.
toHaveColor
Cactus.expect(".header", "color").toEqual("#ff0000");
This tests for total equality, by converting rgba values returned by browser into hex values.
toHaveMargin
Cactus.expect(".header").toHaveMargin("10px");
This tests equality on all sides of the element. You can pass in shorthand or longhand notation.
toHavePadding
Cactus.expect(".header").toHaveMargin("10px 5px");
This tests equality on all sides of the element. You can pass in shorthand or longhand notation.
toHaveBorderWidth
Cactus.expect(".header").toHaveBorderWidth("1px");
This tests equality on all sides of the element. You can pass in shorthand or longhand notation.
toHaveBorderColor
Cactus.expect(".header").toHaveBorderColor("#ff000");
This tests equality on all sides of the element.
With RSpec and Capybara (Selenium webdriver), it's possible to automate the Cactus tests by writing request specs.
Add the following RSpec matcher to spec/spec_helper.rb
:
RSpec::Matchers.define :be_cactus do
match do |actual|
all(".cactus_fail").blank?
end
failure_message_for_should do |actual|
message = "Oei! Something is wrong with the CSS on '#{actual.current_url}' lah!\n"
all(".cactus_fail").each do |failure|
message += "- #{failure.text}\n"
end
message
end
end
Write a request spec spec/requests/cactus_spec.rb
describe 'rspec and capybara integration with cactus', js: true do
it "is cactus-ready " do
page.should be_cactus
end
end
This software is licensed under the MIT License.
FAQs
Unknown package
We found that cactus demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.