end

Rapid detection of monkeypox virus and differentiation of West African and Congo Basin strains using endonuclease restriction-mediated real-time PCR-based testing

Anal. Methods, 2024, Advance Article
DOI: 10.1039/D4AY00492B, Paper
Juan Zhou, Fei Xiao, Xiaolan Huang, Jin Fu, Nan Jia, Chunrong Sun, Min Chen, Zheng Xu, Hui Huang, Yi Wang
A novel multiplex ET-PCR assay that integrates PCR amplification, restriction endonuclease cleavage and real-time fluorescence detection was devised to diagnose MPXV infection and distinguish the Congo Basin and West Africa MPXV strains.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Construction of coumarin-appended calix[4]arene-based fluorescence sensor for the detection of carbofuran in cabbage

Anal. Methods, 2024, 16,2400-2411
DOI: 10.1039/D4AY00030G, Paper
Heni Soni, Nidhi Verma, Divyesh Y. Chaudhari, Sahaj A. Gandhi, Alok Pandya, Pinkesh G. Sutariya
This study presents a novel approach for the detection of carbofuran (CBF) insecticide by exploring a calix[4]arene-derived fluorescence probe, CouC4S, functionalized with two coumarin-labelled at the narrow edge of the calix[4]arene platform.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

A simple and rapid colorimetric detection of Staphylococcus Aureus relied on the distance-dependent optical properties of silver nanoparticles

Anal. Methods, 2024, Accepted Manuscript
DOI: 10.1039/D3AY02189K, Paper
Ngoc Anh Thu Phan, Hoang Men Nguyen, Cam Duyen Thi Vo, Toi Vo Van, Phuoc Long Truong
The quick and accurate diagnosis of pathogens has appeared as a pressing issue in clinical diagnostics, environmental monitoring, and food safety. The current assays are suffering from limited capacities in...
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Are These the Most Interesting Front-end Developer Tools for 2021?

When I come to the end of any given year, it’s always interesting to look back through the click-through stats for my weekly newsletter Web Tools Weekly to see which tools got the most attention.

This year wasn’t all that different from previous years. I’ve learned that clicks happen for basically one of two reasons:

The post Are These the Most Interesting Front-end Developer Tools for 2021? appeared first on Impressive Webs.



  • Roundups and Resources

end

Losing a friend, virtually




end

Good, but not enough: On the extended coverage of the Ayushman Bharat scheme

Extension of free health coverage to all over 70 years is good, but more needs to be done  




end

The endgame: On the injunction against Google

The U.S. district court injunction against Google could end its app dominance




end

Pyridazinone-based derivatives as anticancer agents endowed with anti-microbial activity: molecular design, synthesis, and biological investigation

RSC Med. Chem., 2024, 15,3529-3557
DOI: 10.1039/D4MD00481G, Research Article
Mohamed K. S. El-Nagar, Mai I. Shahin, Mohammed F. El-Behairy, Ehab S. Taher, Mohamed F. El-Badawy, Marwa Sharaky, Dalal A. Abou El Ella, Khaled A. M. Abouzid, Mai Adel
Discovery of novel pyridazinone derivatives with dual antimicrobial and anticancer activities.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

A practical guide for the assay-dependent characterisation of irreversible inhibitors

RSC Med. Chem., 2024, Advance Article
DOI: 10.1039/D4MD00707G, Review Article
Lavleen K. Mader, Jessica E. Borean, Jeffrey W. Keillor
Kinetic evaluations for assay dependent characterization of irreversible inhibitors.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

U.S. Presidential polls: Thulasendrapuram residents pray for Kamala Harris ‘victory




end

Govt. urged to extend last date to pay crop insurance premium by farmers




end

Man attempts to end life, kills his wife and daughter




end

555: React Documentary, Front of the Front End, Fast Fallacy, and Best Practices

Reacting to the React.js documentary, is there still jobs for front of the front end anymore? The fast fallacy in frameworks, best practices, dealing with too much or too little isolation, and AI test generation.




end

564: Render ATL, New Colors Available, Gradients, HDR, and More

Chris previews a bit of his Render ATL 2023 talk, and then we mouth blog some color ideas, thoughts, and shame you for your non-HD websites.




end

622: Website Rendering, Updating Software, and Edge Gets Faster

We're talking website rendering, server side rendering, Astro's server islands, perf hits for navigation elements, updating software because the docs aren't available for older versions, and a new Microsoft Edge was released.




end

628: Tending to RSS Feeds, Code Hike’s Fine Markdown, and Cloudflare R2

Doc told me to travel but there's COVID on the planes, Dave's got a 2x life update, how often do you manage or prune your RSS feed subscriptions, checking in on Code Hike and their fine grained Markdown approach, JavaScript decorators use case, and using Cloudflare R2 for image storage.




end

Becoming nature-friendly, voluntarily

We should not wait for rules and regulations to save the earth from depradation. By Sathya Prakash Varanashi




end

Idukki project leapfrogs ‘endangered’ list

Local enthusiasts pitch in to bring amphibian species back from the brink of extinction




end

The secret sauce behind ITC’s enduring restaurant brands

The promise of an unchanged, consistent menu and supreme culinary artistry has drawn food lovers to ITC’s tables for decades




end

Diamonds are a UV photodetector’s best friend

How lab-grown rocks from Surat are set to power the development of high-performance electronics



  • Science and Technology

end

Why peer-to-peer lending has RBI on edge

Forced to drop many of its attractive features, peer-to-peer lending faces an existential crisis in India




end

Spotlight on ways to end violence against children




end

Make Hindi universally acceptable: Amit Shah says at Kendriya Hindi Samiti meet

Speaking at the 32nd meeting of the Kendriya Hindi Samiti, Union Home Minister Amit Shah said it was necessary to translate all education curricula into Hindi and other Indian languages




end

Two juveniles apprehended for dragging policemen on car’s bonnet 




end

Delhi women to get monthly stipend of ₹1,000 soon: Kejriwal




end

Delhi | The DAG is hosting an exhibition that celebrates MF Husain and his enduring legacy 

An exhibition in New Delhi’s DAG covers pivotal moments of legendary artist and painter MF Husain’s artistic journey 




end

Dribbling past gender stereotypes in rural Odisha

Odisha takes a lead in inspiring and training young tribal boys and girls to play mixed-gender football matches and drive social change in the State




end

Strategies for an enduring legacy

How firms can thrive in an era of social tension, economic nationalism and tech revolution




end

The legend of Charles Page Perin

This engineer from New York helped set up Tata Steel. Find a collection of little known tales in ‘Tata Stories’




end

Book Review: In the Shadow of a Legend: Dilip Kumar

The book is a tribute to Dilip Kumar the man more than the actor




end

International conference to recommend policies to address gender inequality at farms

“The conference aims to promote the sharing of cutting-edge knowledge on gender and inclusion in agri-food systems.”




end

Kohli the run-machine goes past Tendulkar but...

Kohli's knock of 88 (94) was his 10th 50-plus score in the ODI format this year second only to Shubman Gill who leads the charts with twelve 50-plus ODI scores in 2023.




end

BSE sends notice to 509 suspended firms

Bourse asks companies to either apply for revocation of suspension or opt for delisting




end

Shoppers’ paradise lost? Singapore’s malls suffer as locals, tourists curb spending




end

Tatas extend Rs. 56 cr. to U.K. varsity fellowship scheme




end

Sensex jumps 310 points in early trade on firm global trends

Market participants will closely watch Q2 earnings season, starting with Tata Consultancy Services which is set to report its results later in the day, traders said.




end

Sensex jumps 430 points in early trade on positive global trends

The NSE Nifty climbed 138.80 points.




end

Rupee ends flat at 84.07 against U.S. dollar

“Investors remained cautious and stayed away from riskier assets due to geopolitical uncertainties,” forex dealers said




end

Markets rebound in early trade on buying in ICICI bank, firm trends in Asian peers

Equity markets rise on ICICI bank boost, Asian trends, and domestic buying and also BSE Sensex, NSE Nifty climb




end

Sensex, Nifty decline on selling in banking, financial stocks; weak global trends

The BSE Sensex tumbled 426.85 points or 0.53% to settle at 79,942.18. The NSE Nifty dropped 126 points or 0.51% to 24,340.85




end

Vasan urges T.N. govt. to take steps to end illegal sale of narcotic drugs

He expressed concerns over the future of a section of students and youth who were allegedly involved in using and selling such banned substances




end

Thickness-dependent response of aerosol-jet-printed ultrathin high-aspect-ratio electrochemical microactuators

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00886C, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Ji Zhang, Jeremy J. Baumberg, Sohini Kar-Narayan
Trilayer electrochemical actuators comprising an electrolyte layer sandwiched between two electrode layers have been shown to exhibit large deformations at low actuation voltages. Here we report aerosol-jet printing (AJP) of...
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Mapping deformation dynamics to composition of topologically-active DNA blends

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM01065E, Paper
Karthik R. Peddireddy, Ryan McGorty, Rae M. Robertson-Anderson
We leverage in situ enzymatic topological conversion and OpTiDDM to map the deformation dynamics of DNA blends with over 70 fractions of linear, ring and supercoiled molecules that span the phase space of possible topological compositions.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Scale-dependent interactions enable emergent microrheological stress response of actin–vimentin composites

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00988F, Paper
Julie Pinchiaroli, Renita Saldanha, Alison E. Patteson, Rae M. Robertson-Anderson, Bekele J. Gurmessa
The unique mechanical behaviors of actin–vimentin composites in both linear and nonlinear regimes are shaped by the complex interactions among actin entanglements, vimentin crosslinking, and poroelastic properties.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Hydrophobic fouling-resistant electrospun nanofiber membranes from poly(vinylidene fluoride)/polyampholyte blends

Soft Matter, 2024, 20,8654-8662
DOI: 10.1039/D4SM00817K, Paper
Anuja S. Jayasekara, Luca Mazzaferro, Ryan O’Hara, Ayse Asatekin, Peggy Cebe
This study reports the fabrication of non-woven fibrous membranes from electrospinning blended solutions of PVDF with a random polyampholyte amphiphilic copolymer (r-PAC) in N,N-dimethylformamide and methanol.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Bending of polymer films: a method for obtaining a compressive modulus of thin films

Soft Matter, 2024, 20,8589-8600
DOI: 10.1039/D4SM00084F, Paper
Akihiro Ohara, Ko Okumura
We constructed a theory and method for measuring the compressive modulus by combining tensile and bending tests. Elastic asymmetry was confirmed in an industrial PET film.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Extended kinetic theory applied to pressure-controlled shear flows of frictionless spheres between rigid, bumpy planes

Soft Matter, 2024, 20,8702-8715
DOI: 10.1039/D4SM00831F, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Dalila Vescovi, Astrid S. de Wijn, Graham L. W. Cross, Diego Berzi
We perform discrete simulations of steady, pressure-imposed, heterogeneous flows of frictionless spheres sheared between parallel bumpy planes, and use the results to test the predictions of the extended kinetic theory of granular gases.
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Scale-dependent sharpening of interfacial fluctuations in shape-based models of dense cellular sheets

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00804A, Paper
Haicen Yue, Charles Packard, Daniel Sussman
The properties of tissue interfaces – between separate populations of cells, or between a group of cells and its environment – has attracted intense theoretical, computational, and experimental study. Recent...
The content of this RSS Feed (c) The Royal Society of Chemistry




end

Twelve Days of Front End Testing

Amy Kapernick sings us through numerous ways of improving the robustness and reliability of our front end code with a comprehensive rundown of ideas, tools, and resources. The girls and boys won’t get any toys until all the tests are passing.


Anyone who’s spoken to me at some point in November may get the impression that I’m a bit of a grinch. But don’t get me wrong, I love Christmas, I love decorating my tree, singing carols, and doing Christmas cooking - in December. So for me to willingly be humming the 12 days of Christmas in October, it’s probably for something that I think is even more important than banning premature Christmas decorations, like front end testing.

On the 12th day of Christmas, my front end dev, she gave to me, 12 testing tools, 11 optimised images, 10 linting rules, 9 semantic headings, 8 types of colour blindness, 7(.0) contrast ratio, 6 front end tests, 5 browser types, 4 types of tests, 3 shaken trees, 2 image types, and a source controlled deployment pipeline.

Twelve Testing Tools

  1. axe does automated accessibility testing. Run as part of your development build, it outputs warnings to your console to let you know what changes you need to make (referencing accessibility guides). You can also specify particular accessibility standard levels that you’d like to test against, eg. best-practice, wcag2a or wcag2aa, or you can pick and choose individual rules that you want to check for (full list of rules you can test with axe).
    aXe Core can be used to automate accessibility testing, and has a range of extensions for different programming languages and frameworks.
  2. BackstopJS runs visual regression tests on your website. Run separately, or as part of your deployment/PR process, you can use it to make sure your code changes aren’t bleeding into other areas of the website. By default, BackstopJS will set you up with a bunch of configuration options by running backstop init in your project to help get you started.
    BackstopJS compares screenshots of your website to previous screenshots and compares the visual differences to see what’s changed.
  3. Website Speed Test analyses the performance of your website specifically with respect to images, and the potential size savings if they were optimised.
  4. Calibre runs several different types of tests by leveraging Lighthouse. You can run it over your live website through their web app or through the command line, it then monitors your website for performance and accessibility over time, providing metrics and notifications of any changes.
    Calibre provides an easy to use interface and dashboard to test and monitor your website for performance, accessibility and several other areas.
  5. Cypress is for end-to-end testing of your website. When visual regression testing may be a bit much for you, Cypress can help you test and make sure elements are still on the page and visible (even if they’re not pixel for pixel where they were last time).
  6. pa11y is for automated accessibility testing. Run as part of your build process or using their CLI or dashboard, it tests your website against various Web Content Accessibility Guidelines (WCAG) criteria (including visual tests like colour contrast). While axe is run as part of your dev build and gives you an output to the console, it can be combined with pa11y to automate any changes as part of your build process.
  7. whocanuse was created by Corey Ginnivan, and it allows you to view colour combinations as those with colour blindness would (as well as testing other visual deficiencies, and situational vision events), and test the colour contrast ratio based on those colours.
    Colour contrast assessment of my brand colours, testing them for issues for people with various vision deficiencies, and situational vision events.
  8. Colour Blindness Emulation was created by Kyo Nagashima as an SVG filter to emulate the different types of colour blindness, or if you’re using Gatsby, you can use a plugin based off of gatsby-plugin-colorblind-filters.
  9. Accessible Brand Colors tests all your branding colours against each other (this is great to show designers what combinations they can safely use).
    Accessible Brand Colors tests all colour combinations of background and text colours available from your branding colours, and checks them for compliance levels at various font sizes and weights.
  10. Browser dev tools - Most of the modern browsers have been working hard on the features available in their dev tools:
    • Firefox: Accessibility Inspector, Contrast Ratio testing, Performance monitoring.
    • Chromium: (Chrome, Edge Beta, Brave, Vivaldi, Opera, etc) - Accessibility Inspector, Contrast Ratio testing, Performance Monitoring, Lighthouse Audits (testing performance, best practices, accessibility and more).
    • Edge: Accessibility Inspector, Performance monitoring.
    • Safari: Accessibility Inspector, Performance monitoring.
    Firefox (left), Chrome, and Edge Beta (right) Dev Tools now analyse contrast ratios in the colour picker. The Chromium-based browsers also show curves on the colour picker to let you know which shades would meet the contrast requirements.
  11. Linc is a continuous delivery platform that makes testing the front end easier by automatically deploying a version of your website for every commit on every branch. One of the biggest hurdles when testing the front end is needing a live version of the site to view and test against. Linc makes sure you always have one.
  12. ESLint and Stylelint check your code for programmatic and stylistic errors, as well as helping keep formatting standard on projects with multiple developers. Adding a linter to your project not only helps you write better code, it can reduce simple errors that might be found during testing time. If you’re not writing JavaScript, there are plenty of alternatives for whatever language you’re writing in.

If you’re trying to run eslint in VS Code, make sure you don’t have the Beautify extension installed, as that will break things.

Eleven Optimised Images

When it comes to performance, images are where we take the biggest hit, with images accounting for over 50% of total transfer size for websites. Many websites are serving excessively large images “just in case”, but there’s actually a native HTML element that allows us to serve different image sizes based on the screen size or serve better image formats when the browser supports it (or both).

<!-- Serving different images based on the width of the screen -->
<picture>
    <source
        srcset="/img/banner_desktop.jpg"
        media="(min-width: 1200px)"
    />
    <source
        srcset="/img/banner_tablet.jpg"
        media="(min-width: 700px)"
    />
    <source
        srcset="/img/banner_mobile.jpg"
        media="(min-width: 300px)"
    />
    <img src="/img/banner_fallback.jpg">
</picture>

<!-- Serving different image formats based on browser compatibility -->
<picture>
    <source
        srcset="/banner.webp"
        type="image/webp"
    />
    <img src="/img/banner_fallback.jpg">
</picture>

Ten Linting Rules

A year ago, I didn’t use linting. It was mostly just me working on projects, and I can code properly right? But these days it’s one of the first things I add to a project as it saves me so much time (and has taught me a few things about JavaScript). Linting is a very personal choice, but there are plenty of customisations to make sure it’s doing what you want, and it’s available in a wide variety of languages (including linting for styling).

// .eslintrc
module.exports = {
    rules: {
        'no-var': 'error',
        'no-unused-vars': 1,
        'arrow-spacing': ['error', { before: true, after: true }],
        indent: ['error', 'tab'],
        'comma-dangle': ['error', 'always'],
        // standard plugin - options
        'standard/object-curly-even-spacing': ['error', 'either'],
        'standard/array-bracket-even-spacing': ['error', 'either'], },
}

// .stylelintrc
{
    "rules": {
        "color-no-invalid-hex": true,
        "indentation": [
            "tab",
            {
                "except": [
                    "value"
                ]
            }
        ],
        "max-empty-lines": 2,
    }
}

Nine Semantic Headings

No, I’m not saying you should use 9 levels of headings, but your webpage should have an appropriate number of semantic headings. When your users are accessing your webpage with a screen reader, they rely on landmarks like headings to tell them about the page. Similarly to how we would scan a page visually, screen readers give users a list of all headings on a page to allow them to scan through the sections and access the information faster.

When there aren’t any headings on a page (or headings are being used for their formatting rather than their semantic meaning), it makes it more difficult for anyone using a screen reader to understand and navigate the page. Make sure that you don’t skip heading levels on your page, and remember, you can always change the formatting on a p tag if you need to have something that looks like a heading but isn’t one.

<h1>Heading 1 - Page Title</h2>
<p>Traditionally you'll only see one h1 per page as it's the main page title</p>
<h2>Heading 2</h2>
<p>h2 helps to define other sections within the page. h2 must follow h1, but you can also have h2 following another h2.</p>
<h3>Heading 3</h3>
<p>h3 is a sub-section of h2 and follows similar rules to h2. You can have a h3 after h3, but you can't go from h1 to h3.</p>
<h4>Heading 4</h4>
<p>h4 is a sub-section of h3. You get the pattern?</p>

Eight Types of Colour Blindness

Testing colour contrast may not always be enough, as everyone perceives colour differently. Take the below colour combination (ignoring the fact that it doesn’t actually look nice). It has decent colour contrast and would meet the WCAG colour contrast requirements for AA standards – but what if one of your users was red-green colour blind? Would they be able to tell the difference?

http://colorsafe.co/ empowers designers with beautiful and accessible colour palettes based on WCAG Guidelines of text and background contrast ratios.

Red-green colour blindness is the most common form of colour blindness, but there are 8 different types affecting different parts of the colour spectrum, all the way up to complete colour blindness.

Protanopia
Inability to see red end of the colour spectrum.
Protanomaly
Difficulty seeing some shades of red.
Deuteranopia
Inability to see the green portion of the colour spectrum.
Deuteranomaly
Difficulty seeing some shades of green.
Tritanopia
Inability to see blue end of the colour spectrum.
Tritanomaly
Difficulty seeing some shades of blue.
Achromatopsia
Inability to see all parts of the colour spectrum, only able to perceive black, white and shades of grey.
Achromatomaly
Difficulty seeing all parts of the colour spectrum.

Seven (.0) Contrast Ratio

Sufficient colour contrast is perhaps one of the best steps to take for accessibility, as it benefits everyone. Having adequate contrast doesn’t just make the experience better for those with vision impairments, but it also helps those with situational impairments. Have you ever been in the sun and tried to read something on your screen? Whether you can view something when there’s glare could be as easy as making sure there’s enough contrast between the text and its background colour.

The WCAG have defined a contrast ratio of at least 4.5:1 for normal text (18.5px) and 3:1 for large text (24px) to meet AA accessibility standards, but this should be an absolute minimum and isn’t always readable. All four below examples have sufficient contrast to pass AA standards, but you might be hard pressed to read them when there’s glare or you have a dodgy monitor (even more so considering most websites use below 18.5px for their base font size).

Examples of 4.5:1 colour contrast

To meet the AAA standard you need to have a ratio of 7:1 for normal text and 4.5:1 for large text, which should be sufficient for those with 20/80 vision to read.

Six Front End Tests

  1. Adding default axe-core testing to Gatsby:
    //gatsby-config.js
    {
        resolve: 'gatsby-plugin-react-axe',
        options: {},
    },
  2. Running pa11y tests on homepage at various screen sizes:
    // tests/basic-a11y_home.js
    const pa11y = require('pa11y'),
        fs = require('file-system')
    
    runTest()
    
    async function runTest() {
        try {
            const results = await Promise.all([
                pa11y('http://localhost:8000', {
                    standard: 'WCAG2AA',
                    actions: [],
                    screenCapture: `${__dirname}/results/basic-a11y_home_mobile.png`,
                    viewport: {
                        width: 320,
                        height: 480,
                        deviceScaleFactor: 2,
                        isMobile: true,
                    },
                }),
                pa11y('http://localhost:8000', {
                    standard: 'WCAG2AA',
                    actions: [],
                    screenCapture: `${__dirname}/results/basic-a11y_home_desktop.png`,
                    viewport: {
                        width: 1280,
                        height: 1024,
                        deviceScaleFactor: 1,
                        isMobile: false,
                    },
                }),
            ])
    
            fs.writeFile('tests/results/basic-a11y_home.json', JSON.stringify(results), err => {
                console.log(err)
            })
        } catch (err) {
            console.error(err.message)
        }
    }
  3. Running pa11y tests on a blog post template at various screen sizes:
    // tests/basic-a11y_post.js
    const pa11y = require('pa11y'),
        fs = require('file-system')
    
    runTest()
    
    async function runTest() {
        try {
            const results = await Promise.all([
                pa11y('http://localhost:8000/template', {
                    standard: 'WCAG2AA',
                    actions: [],
                    screenCapture: `${__dirname}/results/basic-a11y_post_mobile.png`,
                    viewport: {
                        width: 320,
                        height: 480,
                        deviceScaleFactor: 2,
                        isMobile: true,
                    },
                }),
                pa11y('http://localhost:8000/template', {
                    standard: 'WCAG2AA',
                    actions: [],
                    screenCapture: `${__dirname}/results/basic-a11y_post_desktop.png`,
                    viewport: {
                        width: 1280,
                        height: 1024,
                        deviceScaleFactor: 1,
                        isMobile: false,
                    },
                }),
            ])
    
            fs.writeFile('tests/results/basic-a11y_post.json', JSON.stringify(results), err => {
                console.log(err)
            })
        } catch (err) {
            console.error(err.message)
        }
    }
  4. Running BackstopJS on a homepage and blog post template at various screen sizes:
    // backstop.json
    {
      "id": "backstop_default",
      "viewports": [
        {
          "label": "phone",
          "width": 320,
          "height": 480
        },
        {
          "label": "tablet",
          "width": 1024,
          "height": 768
        },
        {
          "label": "desktop",
          "width": 1280,
          "height": 1024
        }
      ],
      "onBeforeScript": "puppet/onBefore.js",
      "onReadyScript": "puppet/onReady.js",
      "scenarios": [
        {
          "label": "Blog Homepage",
          "url": "http://localhost:8000",
          "delay": 2000,
          "postInteractionWait": 0,
          "expect": 0,
          "misMatchThreshold": 1,
          "requireSameDimensions": true
        },
        {
          "label": "Blog Post",
          "url": "http://localhost:8000/template",
          "delay": 2000,
          "postInteractionWait": 0,
          "expect": 0,
          "misMatchThreshold": 1,
          "requireSameDimensions": true
        }
      ],
      "paths": {
        "bitmaps_reference": "backstop_data/bitmaps_reference",
        "bitmaps_test": "backstop_data/bitmaps_test",
        "engine_scripts": "backstop_data/engine_scripts",
        "html_report": "backstop_data/html_report",
        "ci_report": "backstop_data/ci_report"
      },
      "report": [
        "browser"
      ],
      "engine": "puppeteer",
      "engineOptions": {
        "args": [
          "--no-sandbox"
        ]
      },
      "asyncCaptureLimit": 5,
      "asyncCompareLimit": 50,
      "debug": false,
      "debugWindow": false
    }
  5. Running Cypress tests on the homepage:
    // cypress/integration/basic-test_home.js
    describe('Blog Homepage', () => {
        beforeEach(() => {
            cy.visit('http://localhost:8000')
        })
        it('contains "Amy Goes to Perth" in the title', () => {
            cy.title().should('contain', 'Amy Goes to Perth')
        })
        it('contains posts in feed', () => {
            cy.get('.article-feed').find('article')
        })
        it('all posts contain title', () => {
            cy.get('.article-feed')
                .find('article')
                .get('h2')
        })
    })
  6. Running Cypress tests on a blog post template at various screen sizes:
    // cypress/integration/basic-test_post.js
    
    describe('Blog Post Template', () => {
        beforeEach(() => {
            cy.visit('http://localhost:8000/template')
        })
        it('contains "Amy Goes to Perth" in the title', () => {
            cy.title().should('contain', 'Amy Goes to Perth')
        })
        it('has visible post title', () => {
            cy.get('h1').should('be.visible')
        })
        it('has share icons', () => {
            cy.get('.share-icons a').should('be.visible')
        })
        it('has working share icons', () => {
            cy.get('.share-icons a').click({ multiple: true })
        })
        it('has a visible author profile image', () => {
            cy.get('.author img').should('be.visible')
        })
    })
    
    describe('Mobile Blog Post Template', () => {
        beforeEach(() => {
            cy.viewport('samsung-s10')
            cy.visit('http://localhost:8000/template')
        })
        it('contains "Amy Goes to Perth" in the title', () => {
            cy.title().should('contain', 'Amy Goes to Perth')
        })
        it('has visible post title', () => {
            cy.get('h1').should('be.visible')
        })
        it('has share icons', () => {
            cy.get('.share-icons .share-link').should('be.visible')
        })
        it('has a visible author profile image', () => {
            cy.get('.author img').should('be.visible')
        })
    })

Five Browser Types

Browser testing may be the bane of our existence, but it’s gotten easier, especially when you know the secret:

Not every browser needs to look the same.

Now, this may differ depending on your circumstances, but your website doesn’t have to match pixel for pixel across all browsers. As long as it’s on-brand and is useable across all browsers (this is where a good solid HTML foundation is useful), it’s ok for your site to look a little different between browsers.

While the browsers you test in will differ depending on your user base, the main ones you want to be covering are:

  • Chrome/Chromium
  • Firefox
  • Safari
  • Internet Explorer
  • Edge

Make sure you’re testing these browsers on both desktop and mobile/tablet as well, sometimes their level of support or rendering engine will differ between devices – for example, iOS Chrome uses the Safari rendering engine, so something that works on Android Chrome may not work on iOS Chrome.

Four Types of Test

When it comes to testing the front end, there are a few different areas that we can cover:

  1. Accessibility Testing: doing accessibility testing properly usually involves getting an expert to run through your website, but there are several automated tests that you can run against various standard levels.
  2. Performance Testing: performance testing does technically bleed into the back end as well, but there are plenty of things that can be done from a front end perspective. Making sure the images are optimised, our code is clean and minified, and even optimising fonts using features like the font-display property. No amount of optimising the server and back end will matter if it takes forever for the front end to appear in a browser.
  3. Visual Regression Testing: we’ve all been in the position where changing one line of CSS somewhere has affected another section of the website. Visual regression testing helps prevent that. By using a tool that compares before and after screenshots against one another to flag up what’s changed, you can be sure that style changes won’t bleed into unintended areas of the site.
  4. Browser/device testing: while we all want our users to be running the most recent version of Chrome or Firefox, they may still be using the inbuilt browser on their DVD player – so we need to test various browsers, platforms and devices to make sure that our website can be accessed on whatever device they use.

Three Shaken Trees

Including (and therefore requiring your users to download) things that you’re not using affects the performance of your application. Are you forcing them to download the entire lodash library when you’re only using 2 functions? While a couple of unused lines of code may not seem like a huge performance hit, it can greatly affect users with slower devices or internet connections, as well as cluttering up your code with unused functions and dependencies. This can be set up on your bundler – Webpack and Parcel both have guides for tree shaking, and Gatsby has a plugin to enable it.

Two Image Types

While there are several different types of images, most of the time they fall into one of two categories:

Informative
The image represents/conveys important information that isn’t conveyed by the content surrounding it.
Decorative
The image only adds visual decoration to a page.

From these two categories, we can then determine if we need to provide alternative text for an image. If an image is purely decorative, then we add alt="" to let screen readers know that it’s not important. But if an image is informative, then we need to be supplying a text alternative that describes the picture for anyone who’s using a screen reader or isn’t able to see the image (remember the days when a standard internet connection took a long time to load a page and you saw alt text before an image loaded).

<img src="./nice-picture.jpg" alt="" />
<img src="./important-graphic.png" alt="This is a picture of something important to help add meaning to the text around me" />

If you have a lot of images with missing alt text, look into services that can auto-generate alt text based on image recognition services.

One Source Controlled Deployment Pipeline

While front end tests are harder to automate, running them through a source control and deployment pipeline helps track changes and eliminates issues where “it works on my computer”. Whether you’re running tests as part of the PR process, or simply against every commit that comes through, running tests automatically as part of your process makes every developer’s life easier and helps keep code quality at a high standard.


We already knew that testing was important, and your project can’t be run unless all your unit and integration tests are written (and pass), but often we forget about testing the front end. There are so many different tests we need to be running on the front end, it’s hard to work out what your need to test for and where to start.

Hopefully this has given you a bit of insight to front end testing, and some Christmas cheer to take you into the holidays.


About the author

Amy wears many hats as a freelance developer, business owner and conference addict. She regularly shares her knowledge with her peers and the next generation of developers by mentoring, coaching, teaching and feeding into the tech community in many ways.

Amy can be found volunteering her time with Fenders, ACS, SheCodes (formerly Perth Web Girls) and MusesJS (formerly NodeGirls). She also works as an evangelist for YOW! Conferences, is a Twilio Champion and has been nominated for the WiTWA awards for the last 2 years.

In her spare time Amy shares her knowledge and experience on her blogs and speaking at conferences. She has previously given keynotes at multiple events as well as speaking at several international conferences in the US and Europe.

More articles by Amy




end

Bending fashion the cheapensive way

Creating a balance between budget and fashion, branded and streetwear, reuse and recycle, Bengaluru's college goers show the way