el

Telephone cord blister formation in solvent swollen elastomer films

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM01035C, Paper
Open Access
James S. Sharp, Nathaniel M. Roberts, Sam Walker
Telephone cord blister formation is studied in PDMS films swollen in four different solvents. Buckling and fracture mechanics theories are developed to interpret blister morphology and growth rates. A simple surface patterning method is introduced.
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




el

Network interactions simultaneously enhance stiffness and lubricity of triple-network hydrogels

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00969J, Paper
Nabila Ali, Connor J. Demott, Olivia F. Dingus, Melissa A. Grunlan, Alison C. Dunn
Tough hydrogels with a charge-variable third network were assessed for biomimicking lubricity in both water and FBS solution.
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




el

Carboxymethyl cellulose-stabilized calcium phosphate particles for injectable hydrogel-based bone tissue engineering

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00670D, Paper
Piyaporn Srisura, Yuwaporn Pinyakit, Umphan Ngoensawat, Pongsakorn Yuntasiri, Khoiria Nur Atika Putri, Theerapat Chanamuangkon, Waranyoo Phoolcharoen, Varol Intasanta, Voravee P. Hoven
Carboxymethyl cellulose-stabilized calcium phosphate particles well-dispersed in aqueous solution can be integrated into an injectable hydrogel made of methacrylated hyaluronic acid which is a promising material for bone regeneration applications.
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




el

The cellular Potts model on disordered lattices

Soft Matter, 2024, 20,8337-8352
DOI: 10.1039/D4SM00445K, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Hossein Nemati, J. de Graaf
Extending the cellular Potts model to disordered Voronoi lattices reduces artifacts observed on regular lattices. An order–disorder transition is observed as a function of surface tension on the disordered lattice and the regular lattices.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Chemo-mechanical model of cell polarization initiated by structural polarity

Soft Matter, 2024, 20,8407-8419
DOI: 10.1039/D4SM00800F, Paper
Hexiang Wang, Zhimeng Jia, Yuqiang Fang
We establish a multiscale model of a cell to explore the chemomechanical mechanisms of cell polarization initiated by structural polarity. The two-dimensional vertex model is built by coupling the cytoskeletal reorganization and the Cdc42 activation.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Nanoconfinement effects on the dynamics of an ionic liquid-based electrolyte probed by multinuclear NMR

Soft Matter, 2024, 20,8436-8445
DOI: 10.1039/D4SM01058B, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Andrei Filippov, Maiia Rudakova, Victor P. Archipov, Faiz Ullah Shah
Diffusivity is controlled by exchange of ions between “narrow” and “large” pores that results in an abnormal temperature variation. Li+ ions are solvated inside the porous glasses and their diffusivity remains slower as compared to the organic ions.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Development of a coarse-grained molecular dynamics model for poly(dimethyl-co-diphenyl)siloxane

Soft Matter, 2024, 20,8480-8492
DOI: 10.1039/D4SM00875H, Paper
Weikang Xian, Amitesh Maiti, Andrew P. Saab, Ying Li
Polydimethylsiloxane and its copolymer systems have a wide range of application. We systematically develop a coarse-grained MD model for PDMS-co-PDPS system. The model preserves the structural and dynamic properties of the material quantitatively.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Effective patchiness from critical points of a coarse-grained protein model with explicit shape and charge anisotropy

Soft Matter, 2024, 20,8455-8467
DOI: 10.1039/D4SM00867G, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Jens Weimar, Frank Hirschmann, Martin Oettel
Critical points of an anisotropic, coarse-grained protein model are used to detemine an “effective patchiness” by comparison to the Kern–Frenkel patchy model.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Segregative phase separation of strong polyelectrolyte complexes at high salt and high polymer concentrations

Soft Matter, 2024, 20,8505-8514
DOI: 10.1039/D4SM00994K, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Conner H. Chee, Rotem Benharush, Lexi R. Knight, Jennifer E. Laaser
Complexes of strong polyelectrolytes prepared well above the binodal are shown to undergo hydrophobicity-driven segregative phase separation.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Self-assembly of amphiphilic homopolymers grafted onto spherical nanoparticles: complete embedded minimal surfaces and a machine learning algorithm for their recognition

Soft Matter, 2024, 20,8385-8394
DOI: 10.1039/D4SM00616J, Paper
D. A. Mitkovskiy, A. A. Lazutin, A. L. Talis, V. V. Vasilevskaya
Amphiphilic macromolecules grafted onto spherical nanoparticles can self-assemble into morphological structures corresponding to the family of complete embedded minimal surfaces. They arise situationally, can coexist and transform into each other.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Optimality and cooperativity in superselective surface binding by multivalent DNA nanostars

Soft Matter, 2024, 20,8515-8523
DOI: 10.1039/D4SM00704B, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Christine Linne, Eva Heemskerk, Jos W. Zwanikken, Daniela J. Kraft, Liedewij Laan
Our study shows that DNA nanostars with three binding sites (ligands) can (1) bind superselectively to surfaces based on receptor density, and (2) that interactions between ligands affect the optimum number of ligands required for superselectivity.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Random field reconstruction of three-phase polymer structures with anisotropy from 2D-small-angle scattering data

Soft Matter, 2024, 20,8493-8504
DOI: 10.1039/D4SM00721B, Paper
Open Access
Stephen Kronenberger, Nitant Gupta, Benjamin Gould, Colin Peterson, Arthi Jayaraman
We present a computational method to analyze 2D small-angle scattering data from three-phase soft materials systems with structural anisotropy and output representative real-space structures of the three phases.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Cell shape and orientation control galvanotactic accuracy

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00952E, Paper
Ifunanya Nwogbaga, Brian A. Camley
We study the physical factors that control the accuracy with which elongated cells can sense the direction of an electric field, exploring whether cells are more accurate sensors when oriented parallel to the field or perpendicular to it.
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




el

pH and glucose dual-responsive phenylboronic acid hydrogels for smart insulin delivery

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM01004C, Paper
Keke Yang, Hou Bo, Dewei Ma, Mingwei Peng, Qinglong Liu, Ziwen Heng, Zhongwei Gu, Xuhan Liu, Siyuan Chen
Phenylboronic acid (PBA) is a widely exploited glucose-sensitive element for constructing glucose-responsive hydrogels to enable smart insulin delivery.
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




el

Retraction: Self-assembled organic nanotubes embedding hydrophobic molecules within solid bilayer membranes

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM90171A, Retraction
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Naohiro Kameta, Masumi Asakawa, Mitsutoshi Masuda, Toshimi Shimizu
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




el

Modeling nematic phase main-chain liquid crystal elastomer synthesis, mechanics, and thermal actuation via coarse-grained molecular dynamics

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00528G, Paper
Nicolas Herard, Raja Annapooranan, Todd Henry, Martin Kroger, Shengqiang Cai, Nicholas Boechler, Yelena Sliozberg
This paper presents a coarse-grained molecular dynamics simulation study of the synthesis, mechanics, and thermal actuation of nematic phase main-chain liquid crystal elastomers (LCEs), a type of soft, temperature-responsive, polymeric...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Coupled dynamics in binary mixtures of model colloidal Yukawa systems

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM01123F, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Daniel Weidig, Joachim Wagner
Self- and collective dynamics in mixtures of highly charged binary colloidal particles is analyzed by Brownian dynamics simulations. For equally charged, but differently sized particles coupling effects in their long-time dynamics are observed.
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




el

Src kinase slows collective rotation of confined epithelial cell monolayers

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00827H, Paper
Nastassia Pricoupenko, Flavia Marsigliesi, Philippe Marcq, Carles Blanch-Mercader, Isabelle A Bonnet
Collective cell migration is key during development, wound healing and metastasis and relies on coordinated cell behaviors at the group level. Src kinase is a key signalling protein for physiological...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Enhanced gravitational trapping of bottom-heavy Janus particles over parallel microgrooves

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00989D, Paper
Yan Wen, Jiayu Liu, Wei Wang, Pik-Yin Lai, Penger Tong
We report a systematic study of barrier-crossing dynamics of bottom-heavy self-propelled particles (SPPs) over a one-dimensional periodic potential landscape $U_0(x)$, which is fabricated on a microgroove-patterned polydimethylsiloxane (PDMS) substrate. From...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

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




el

Long-lived unidirectional flow of active particles within long narrow channels

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00879K, Paper
Man Xu, Ying Lan, Yuehua Yang, Hongyuan Jiang
We present the dynamics of particles in a device divided into two chambers by V-shaped barriers and connected by a narrow channel. Here three distinct movement modes occur, including stochastic movement, oscillation and unidirectional flows.
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




el

Liquid crystalline collagen assemblies as substrates for directed alignment of human Schwann cells

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00534A, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Homa Ghaiedi, Luis Carlos Pinzon Herrera, Saja Alshafeay, Leonard Harris, Jorge Almodovar, Karthik Nayani
Collagen is a key component of the extracellular matrix (ECM) and well-oriented domains of collagen are important for mimicking the local cell environment in vitro. Here, we demonstrate macroscopic alignment on collagen in 2-D substrates and 3-D hydrogels.
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




el

Towards a universal model for the foaming behavior of surfactants: a case study on per- and polyfluoroalkyl substances (PFAS)

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00931B, Paper
Muchu Zhou, Reza Foudazi
Foam fractionation offers a promising solution for the separation of surface-active contaminants from water.
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




el

Aging iridium oxide catalyst inks: a formulation strategy to enhance ink processability for polymer electrolyte membrane water electrolyzers

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00987H, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Sunilkumar Khandavalli, Jae Hyung Park, Robin Rice, Diana Y. Zhang, Sarah A. Berlinger, Guido Bender, Deborah J. Myers, Michael Ulsh, Scott A. Mauger
Steady-shear rheology showing evolution of the microstructure of iridium oxide catalyst inks of PEM water electrolyzers with aging time.
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




el

Dynamical crossovers and correlations in a harmonic chain of active particles

Soft Matter, 2024, 20,8638-8653
DOI: 10.1039/D4SM00350K, Paper
Subhajit Paul, Abhishek Dhar, Debasish Chaudhuri
We explore the dynamics of a tracer in a harmonic chain of active particles, investigating the influence of interactions. Depending upon the time-scales governed by the interaction and the persistence of activity, we explore crossovers between different scaling behaviors of its dynamics.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Model predictive control of non-interacting active Brownian particles

Soft Matter, 2024, 20,8581-8588
DOI: 10.1039/D4SM00902A, Paper
Titus Quah, Kevin J. Modica, James B. Rawlings, Sho C. Takatori
Model predictive control is used to guide the spatiotemporal distribution of active Brownian particles by forecasting future states and optimizing control inputs to achieve tasks like dividing a population into two groups.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Pickering emulsions for stimuli-responsive transdermal drug delivery: effect of rheology and microstructure on performance

Soft Matter, 2024, 20,8621-8637
DOI: 10.1039/D4SM00993B, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Simona Migliozzi, Yiting He, Maryam Parhizkar, Yang Lan, Panagiota Angeli
Elucidating the impact of microgels attributes on the microstructure, rheology and functionality of Pickering emulsions.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Enhanced chemotaxis efficiency of Escherichia coli in viscoelastic solutions

Soft Matter, 2024, 20,8675-8683
DOI: 10.1039/D4SM01094A, Paper
Shaoying Zhu, Rui He, Caijuan Yue, Rongjing Zhang, Junhua Yuan
E. coli shows enhanced chemotaxis in viscoelastic media, with faster migration and higher accumulation in attractant-rich areas compared to Newtonian conditions.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

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




el

Entropically and enthalpically driven self-assembly of a naphthalimide-based luminescent organic π-amphiphile in water

Soft Matter, 2024, 20,8684-8691
DOI: 10.1039/D4SM00986J, Paper
Sk Mursed Ali, Sujauddin Sk, Shuvajyoti Sarkar, Sayani Das, Nayim Sepay, Mijanur Rahaman Molla
Entropically and enthalpically favourable vesicular self-assembly of a naphthalimide based water soluble luminescent organic dipolar building block is reported.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Influence of counterion type on the scattering of a semiflexible polyelectrolyte

Soft Matter, 2024, 20,8610-8620
DOI: 10.1039/D4SM00874J, Paper
Open Access
Anish Gulati, Jack F. Douglas, Olga Matsarskaia, Carlos G. Lopez
Understanding the influence of counterion and backbone solvation on the conformational and thermodynamic properties of polyelectrolytes in solution is one of the main open challenges in polyelectrolyte science.
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Hydrogel-based 3D fabrication of multiple replicas with varying sizes and materials from a single template via iterative shrinking

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00835A, Paper
Eunseok Heo, Hye Been Koo, Jun Chang Yang, In Cho, Hyun-Hee Lee, Yong-Jin Yoon, Steve Park, Jae-Byum Chang
3D printing technologies have been widely used for the rapid prototyping of 3D structures, but their application in a broader context has been hampered by their low printing throughput. For...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Co-assembly of Cellulose Nanocrystals and Gold Nanorods: Insights from Molecular Dynamics Modelling

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00871E, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Jiaxin Hou, William W Sampson, Ahu Gumrah Dumanli
A coarse-grained molecular dynamics model is developed to explore the co-assembly of cellulose nanocrystals (CNCs) and gold nanorods (AuNRs) under sedimentation conditions with varying vol- umetric concentration and particle-size ratios....
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Understanding Polymer-Colloid Gels: A Solvent Perspective Using Low-Field NMR

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM01098A, Communication
Léo Hervéou, Gauthier Legrand, Thibaut Divoux, Guilhem Pablo Baeza
The present work emphasizes the relevance of low-field NMR relaxometry to investigate colloid-polymer hydrogels by probing water dynamics across a wide range of formulations between 10°C and 80°C. By examining...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Interfacial viscoelasticity in oscillating drops of cyclodextrin-surfactant aqueous solution: experiments and theory

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM01007H, Paper
José Roberto Romero-Arias, Alberto S. Luviano, Miguel Costas, Aurora Hernandez-Machado, Rafael A Barrio
We present experiments involving oscillating droplets in aqueous cyclodextrin-surfactant solutions. In these experiments, α-cyclodextrin (αCD) and anionic surfactants exhibit remarkable viscoelasticity at the liquid/air interface, with dilatational modulus varying across...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Mechanical properties soft hydrogels: assessment by scanning ion-conductance microscopy and atomic force microscopy

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00966E, Paper
Tatiana Tikhonova, Yuri M. Efremov, Vasilii Kolmogorov, Aleksei Iakovlev, Nikolay Sysoev, Peter S. Timashev, Victor Fadeev, Alexander Tivtikyan, Sergey Salikhov, Petr Gorelkin, Yuri Korchev, Alexandr Erofeev, Evgeny Shirshin
The growing interest in biomimetic hydrogels is due to their successful applications in tissue engineering, 3D cell culturing and drug delivery. Major characteristics of hydrogels include swelling, porosity, degradation rate,...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

A dynamical system approach to relaxation in glass-forming liquids

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00976B, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Jack F. Douglas, Qi-Lu Yuan, Jiarui Zhang, Hao Zhang, Wen-Sheng Xu
We adapt a dynamical system approach to the practical matter of estimating relaxation times in both cooled liquids and crystals at elevated temperatures, which we identify as weakly non-integrable dynamical systems.
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




el

Biomimetic mineralization of positively charged silica nanoparticles templated by thermoresponsive protein micelles: applications to electrostatic assembly of hierarchical and composite superstructures

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00907J, Paper
Nada Y. Naser, William C. Wixson, Helen Larson, Brandi M. Cossairt, Lilo D. Pozzo, François Baneyx
Exploiting the ability of a solid-binding elastin-like peptide to micellize, we mineralize monodisperse silica nanoparticles whose positive surface charge enables one-step electrostatic assembly of various mono- and bi-material superstructures.
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




el

Pairing-specific microstructure in depletion gels of bidisperse colloids

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM00811A, Paper
Open Access
Rony A. Waheibi, Lilian C. Hsiao
We report the ensemble-averaged and pairing-specific network microstructure formed by short-range depletion attractions in bidisperse hard sphere-like colloidal systems.
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




el

Individual Closed-Loop Control of Micromotors by Selective Light Actuation

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00810C, Communication
Open Access
David Rivas, Max Sokolich, Sambeeta Das
Control of individual micromotors within a group would allow for improved efficiency, greater ability to accomplish complex tasks, higher throughput, and increased adaptability. However, independent control of micromotors remains a...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Coarsening dynamics of aster defects in a model polar active matter

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM00788C, Paper
Soumyadeep Mondal, Pankaj Popli, Sumantra Sarkar
We numerically study the dynamics of topological defects in 2D polar active matter coupled to a conserved density field, which shows anomalous kinetics and defect distribution. The initial many- defect...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

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




el

Self-consistent electrostatic formalism of bulk electrolytes based on the asymmetric treatment of the short- and long-range ion interactions

Soft Matter, 2024, Advance Article
DOI: 10.1039/D4SM01174K, Paper
Sahin Buyukdagli
Internal energy of monovalent electrolytes (left) and dimensionless screening parameter of multivalent electrolytes (right).
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




el

A generalized model for predicting different morphologies of bacterial swarming on a porous solid surface

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM01072H, Paper
Uttam Kumar, Pushpavanam Subramaniam
In this study, we develop a comprehensive two-phase model to analyze the dynamics of bacterial swarming on porous substrates. The two distinct phases under consideration are the cell and aqueous...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

Magnetic colloidal single particles and dumbbells on a tilted washboard moir'e pattern in a precessing external field

Soft Matter, 2024, Accepted Manuscript
DOI: 10.1039/D4SM01183J, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Farzaneh Farrokhzad, Nico C. X. Stuhlmüller, Piotr Kuswik, Maciej Urbaniak, Feliks Stobiecki, Sapida Akhundzada, Arno Ehresmann, Daniel de las Heras, Thomas M. Fischer
We measure the dynamical behavior of colloidal singlets and dumbbells on an inclined magnetic moir'e pattern, subject to a precessing external homogeneous magnetic field. At low external field strength single...
The content of this RSS Feed (c) The Royal Society of Chemistry




el

5 tips to help you reduce cholesterol

While the causes for high cholesterol are many, there are simple ways to reduce it, says rediffGURU Dr Karthiyayani Mahadevan.




el

Making a Better Custom Select Element

Julie Grundy kicks off this, our fifteenth year, by diving headlong into the snowy issue of customising form inputs. Nothing makes a more special gift at Christmas that something you’ve designed and customised yourself. But can it be done while staying accessible to every user?


In my work as an accessibility consultant, there are some frequent problems I find on people’s websites. One that’s come up a lot recently is that people are making custom select inputs for their forms. I can tell that people are trying to make them accessible, because they’ve added ARIA attributes or visually-hidden instructions for screen reader users. Sometimes they use a plugin which claims to be accessible. And this is great, I love that folks want to do the right thing! But so far I’ve never come across a custom select input which actually meets all of the WCAG AA criteria.

Often I recommend to people that they use the native HTML select element instead. Yes, they’re super ugly, but as Scott Jehl shows us in his article Styling a Select Like It’s 2019 they are a lot easier to style than they used to be. They come with a lot of accessibility for free – they’re recognised and announced clearly by all screen reader software, they work reliably and predictably with keyboards and touch, and they look good in high contrast themes.

But sometimes, I can’t recommend the select input as a replacement. We want a way for someone to choose an item from a list of options, but it’s more complicated than just that. We want autocomplete options. We want to put images in there, not just text. The optgroup element is ugly, hard to style, and not announced by screen readers. The focus styles are low contrast. I had high hopes for the datalist element, but although it works well with screen readers, it’s no good for people with low vision who zoom or use high contrast themes.

Figure 1: a datalist zoomed in by 300%

Select inputs are limited in a lot of ways. They’re frustrating to work with when you have something which looks almost like what you want, but is too restricted to be useful. We know we can do better, so we make our own.

Let’s work out how to do that while keeping all the accessibility features of the original.

Semantic HTML

We’ll start with a solid, semantic HTML base. A select input is essentially a text input which restricts the possible answers, so let’s make a standard input.

<label for="custom-select">User Type</label>
<input type="text" id="custom-select">

Then we need to show everyone who can see that there are options available, so let’s add an image with an arrow, like the native element.

<label for="custom-select">User Type</label>
<input type="text" id="custom-select">
<img src="arrow-down.svg" alt="">

For this input, we’re going to use ARIA attributes to represent the information in the icon, so we’ll give it an empty alt attribute so screen readers don’t announce its filename.

Finally, we want a list of options. An unordered list element is a sensible choice here. It also lets screen reader software understand that these bits of text are related to each other as part of a group.

<ul class="custom-select-options">
  <li>User</li>
  <li>Author</li>
  <li>Editor</li>
  <li>Manager</li>
  <li>Administrator</li>
</ul>

You can dynamically add or remove options from this list whenever you need to. And, unlike our <option> element inside a <select>, we can add whatever we like inside the list item. So if you need images to distinguish between lots of very similar-named objects, or to add supplementary details, you can go right ahead. I’m going to add some extra text to mine, to help explain the differences between the choices.

This is a good base to begin with. But it looks nothing like a select input! We want to make sure our sighted users get something they’re familiar with and know how to use already.

Styling with CSS

I’ll add some basic styles similar to what’s in Scott Jehl’s article above.

We also need to make sure that people who customise their colours in high contrast modes can still tell what they’re looking at. After checking it in the default Windows high contrast theme, I’ve decided to add a left-hand border to the focus and hover styles, to make sure it’s clear which item is about to be chosen.

This would be a good time to add any dark-mode styles if that’s your jam. People who get migraines from bright screens will thank you!

JavaScript for behaviour

Of course, our custom select doesn’t actually do anything yet. We have a few tasks for it: to toggle the options list open and closed when we click the input, to filter the options when people type in the input, and for selecting an option to add it to the input and close the list. I’m going to tackle toggling first because it’s the easiest.

Toggling

Sometimes folks use opacity or height to hide content on screen, but that’s like using Harry Potter’s invisibility cloak. No-one can see what’s under there, but Harry doesn’t cease to exist and you can still poke him with a wand. In our case, screen reader and keyboard users can still reach an invisible list.

Instead of making the content see-through or smaller, I’m going to use display: none to hide the list. display: none removes the content from the accessibility tree, so it can’t be accessed by any user, not just people who can see. I always have a pair of utility classes for hiding things, as follows:

.hidden-all {
  display: none;
}

.hidden-visually {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    -webkit-clip-path: inset(50%);
    clip-path: inset(50%);
    border: 0;
} 

So now I can just toggle the CSS class .hidden-all on my list whenever I like.

Browsing the options

Opening up our list works well for our mouse and touch-screen users. Our styles give a nice big tap target for touch, and mouse users can click wherever they like.

We need to make sure our keyboard users are taken care of though. Some of our sighted users will be relying on the keyboard if they have mobility or dexterity issues. Usually our screen reader users are in Browse mode, which lets them click the arrow keys to navigate through content. However, custom selects are usually inside form elements. which pushes screen reader software to Forms Mode. In Forms mode, the screen reader software can only reach focusable items when the user clicks the Tab key, unless we provide an alternative. Our list items are not focusable by default, so let’s work on that alternative.

To do this, I’m adding a tabindex of -1 to each list item. This way I can send focus to them with JavaScript, but they won’t be part of the normal keyboard focus path of the page.

csOptions.forEach(function(option) {
    option.setAttribute('tabindex, '-1')
}) 

Now I can move the focus using the Up and Down arrow keys, as well as with a mouse or tapping the screen. The activeElement property of the document is a way of finding where the keyboard focus is at the moment. I can use that to loop through the elements in the list and move the focus point forward or back, depending on which key is pressed.

function doKeyAction(whichKey) {
  const focusPoint = document.activeElement
  switch(whichKey) {
    case: 'ArrowDown':
      toggleList('Open')
      moveFocus(focusPoint, 'forward')
      break
    case: 'ArrowUp':
      toggleList('Open')
      moveFocus(focusPoint, 'back')
      break
  }
}

Selecting

The Enter key is traditional for activating an element, and we want to match the original select input.

We add another case to the keypress detector…

case 'Enter':
  makeChoice(focusPoint)
  toggleList('Shut')
  setState('closed')
  break 

… then make a function which grabs the currently focused item and puts it in our text input. Then we can close the list and move focus up to the input as well.

function makeChoice(whichOption) {
    const optionText = whichOption.documentQuerySelector('strong')
    csInput.value = optionText
}

Filtering

Standard select inputs have keyboard shortcuts – typing a letter will send focus to the first item in the option which begins with that letter. If you type the letter again, focus will move to the next option beginning with that letter.

This is useful, but there’s no clue to tell users how many options might be in this category, so they have to experiment to find out. We can make an improvement for our users by filtering to just the set of options which matches that letter or sequence of letters. Then sighted users can see exactly how many options they’ve got, and continue filtering by typing more if they like. (Our screen reader users can’t see the remaining options while they’re typing, but don’t worry – we’ll have a solution for them in the next section).

I’m going to use the .filter method to make a new array which only has the items which match the text value of the input. There are different ways you could do this part – my goal was to avoid having to use regex, but you should choose whatever method works best for your content.

function doFilter() {
  const terms = csInput.value
  const aFilteredOptions = aOptions.filter(option => {
    if (option.innerText.toUpperCase().startsWith(terms.toUpperCase())) {
    return true
    }
  })
  // hide all options
  csOptions.forEach(option => option.style.display = "none")
  // re-show the options which match our terms
  aFilteredOptions.forEach(function(option) {
    option.style.display = ""
  })
} 

Nice! This is now looking and behaving really well. We’ve got one more problem though – for a screen reader user, this is a jumble of information. What’s being reported to the browser’s accessibility API is that there’s an input followed by some clickable text. Are they related? Who knows! What happens if we start typing, or click one of the clicky text things? It’s a mystery when you can’t see what’s happening. But we can fix that.

ARIA

ARIA attributes don’t provide much in the way of additional features. Adding an aria-expanded='true' attribute doesn’t actually make anything expand. What ARIA does is provide information about what’s happening to the accessibility API, which can then pass it on to any assistive technology which asks for it.

The WCAG requirements tell us that when we’re making custom elements, we need to make sure that as a whole, the widget tells us its name, its role, and its current value. Both Chrome and Firefox reveal the accessibility tree in their dev tools, so you can check how any of your widgets will be reported.

We already have a name for our input – it comes from the label we associated to the text input right at the start. We don’t need to name every other part of the field, as that makes it seem like more than one input is present. We also don’t need to add a value, because when we select an item from the list, it’s added to the text input and therefore is exposed to the API.

Figure 2: How Firefox reports our custom select to assistive technology.

But our screen readers are going to announce this custom select widget as a text entry field, with some images and a list nearby.

The ARIA Authoring Practices site has a pattern for comboboxes with listboxes attached. It tells you all the ARIA you need to make screen reader software give a useful description of our custom widget.

I’m going to add all this ARIA via JavaScript, instead of putting it in the HTML. If my JavaScript doesn’t work for any reason, the input can still be a plain text field, and we don’t want screen readers to announce it as anything fancier than that.

csSelector.setAttribute('role', 'combobox') 
csSelector.setAttribute('aria-haspopup', 'listbox')
csSelector.setAttribute('aria-owns', '#list') 
csInput.setAttribute('aria-autocomplete', 'both')
csInput.setAttribute('aria-controls', 'list')

The next thing to do is let blind users know if the list is opened or closed. For that task I’m going to add an aria-expanded attribute to the group, and update it from false to true whenever the list changes state in our toggling function.

The final touch is to add a secret status message to the widget. We can use it to update the number of options available after we’ve filtered them by typing into the input. When there are a lot of options to choose from, this helps people who can’t see the list reducing know if they’re on the right track or not.

To do that we first have to give the status message a home in our HTML.

<div id='custom-select-status' class='hidden-visually' aria-live='polite'></div>

I’m using our visually-hidden style so that only screen readers will find it. I’m using aria-live so that it will be announced as often as it updates, not just when a screen reader user navigates past it. Live regions need to be present at page load, but we won’t have anything to say about the custom select then so we can leave it empty for now.

Next we add one line to our filtering function, to find the length of our current list.

updateStatus(aFilteredOptions.length)

Then we send that to a function which will update our live region.

function updateStatus(howMany) {
    console.log('updating status')
    csStatus.textContent = howMany + " options available."
}

Conclusion

Let’s review what we’ve done to make an awesome custom select input:

  • Used semantic HTML so that it’s easily interpreted by assistive technology while expanding the types of content we can include in it
  • Added CSS styles which are robust enough to survive different visual environments while also fitting into our branding needs
  • Used JavaScript to provide the basic functionality that the native element has
  • Added more JavaScript to get useful functionality that the native element lacks
  • Carefully added ARIA attributes to make sure that the purpose and results of using the element are available to assistive technology and are updated as the user interacts with it.

You can check out my custom select pattern on GitHub – I’ll be making additions as I test it on more assistive technology, and I welcome suggestions for improvements.

The ARIA pattern linked above has a variety of examples and customisations. I hope stepping through this example shows you why each of the requirements exists, and how you can make them fit your own needs.

I think the volume of custom select inputs out there shows the ways in which the native select input is insufficient for modern websites. You’ll be pleased to know that Greg Whitworth and Simon Pieters are working on improving several input types! You can let them know what features you’d like selects to have. But until that work pays off, let’s make our custom selects as accessible and robust as they can possibly be.


About the author

Julie Grundy is an accessibility expert who works for Intopia, a digital accessibility consultancy. She has over 15 years experience as a front-end web developer in the health and education sectors. She believes in the democratic web and aims to unlock digital worlds for as many people as possible. In her spare time, she knits very slowly and chases very quickly after her two whippets.

More articles by Julie




el

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




el

Future Accessibility Guidelines—for People Who Can’t Wait to Read Them

Alan Dalton uses this, the International Day of Persons with Disabilities, to look back at where we’ve come from, to evaluate where we are, and to look forward to what’s coming next in the future of accessibility guidelines.


Happy United Nations International Day of Persons with Disabilities! The United Nations have chosen “Promoting the participation of persons with disabilities and their leadership: taking action on the 2030 Development Agenda” for this year’s observance. Let’s see how the World Wide Web Consortium (W3C)’s Web Accessibility Initiative (WAI) guidelines of accessibility past, present, and yet-to-come can help us to follow that goal, and make sure that the websites—and everything else!—that we create can include as many potential users as possible.

Guidelines of Accessibility Past

The W3C published the Web Content Accessibility Guidelines (WCAG) 1.0 on 5th May 1999, when most of us were playing Snake on our Nokia 3210s’ 1.5” monochrome screens…a very long time ago in technology terms. From the start, those guidelines proved enlightening for designers and developers who wanted to avoid excluding users from their websites. For example, we learned how to provide alternatives to audio and images, how to structure information, and how to help users to find the information they needed. However, those guidelines were specific to the web technologies of the time, resulting in limitations such as requiring developers to “use W3C technologies when they are available […]”. Also, those guidelines became outdated; I doubt that you, gentle reader, consult their technical documentation about “directly accessible applets” or “Writing for browsers that do not support FRAME” in your day-to-day work.

Guidelines of Accessibility Present

The W3C published the Web Content Accessibility Guidelines (WCAG) 2.0 on 11th December 2008, when most of us were admiring the iPhone 3G’s innovative “iPhone OS 2.0” software…a long time ago in technology terms. Unlike WCAG 1, these guidelines also applied to non-W3C technologies, such as PDF and Flash. These guidelines used legalese and future-proofed language, with terms such as “time-based media” and “programmatically determined”, and testable success criteria. This made these guidelines more difficult for designers and developers to grasp, but also enabled the guidelines to make their way into international standards (see EN 301 549 — Accessibility requirements suitable for public procurement of ICT products and services in Europe and ISO/IEC 40500:2012 Information technology — W3C Web Content Accessibility Guidelines (WCAG) 2.0) and even international law (see EU Directive 2016/2102 … on the accessibility of the websites and mobile applications of public sector bodies).

More importantly, these guidelines enabled designers and developers to create inclusive websites, at scale. For example, in the past 18 months:

The updated Web Content Accessibility Guidelines (WCAG) 2.1 arrived on 5th June last year—almost a 10-year wait for a “.1” update!—and added 17 new success criteria to help bring the guidelines up to date. Those new criteria focused on people using mobile devices and touchscreens, people with low vision, and people with cognitive and learning disabilities.

(If you need to get up to speed with these guidelines, take 36 minutes to read “Web Content Accessibility Guidelines—for People Who Haven’t Read Them” and Web Content Accessibility Guidelines 2.1—for People Who Haven’t Read the Update.)

Guidelines of Accessibility Yet to Come

So, what’s next? Well, the W3C hope to release another minor update (WCAG 2.2) in November 2020. However, they also have a Task Force working on produce major new guidelines with wider scope (more people, more technologies) and fewer limitations (easier to understand, easier to use) in November 2022. These next guidelines will have a different name, because they will cover more than “Web” and “Content”. Andrew Kirkpatrick (Adobe’s Head of Accessibility) named the Task Force “Silver” (because the initials of “Accessibility Guidelines” form the symbol of the silver element).

The Silver Task Force want the next major accessibility guidelines to:

  • take account of more disabilities;
  • apply to more technologies than just the web, including virtual reality, augmented reality, voice assistants, and more;
  • consider all the technologies that people use, including authoring tools, browsers, media players, assistive technologies (including screen readers and screen magnifiers), application software, and operating systems.

That’s quite a challenge, and so the more people who can help, the better. The Silver Task Force wanted an alternative to W3C’s Working Groups, which are made up of employees of organisations who are members of the W3C, and invited experts. So, they created a Silver Community Group to allow everyone to contribute towards this crucial work. If you want to join right now, for free, just create a W3C account.

Like all good designers, the Silver Task Force and Silver Community Group began by researching. They examined the problems that people have had when using, conforming to, and maintaining the existing accessibility guidelines, and then summarised that research. From there, the Silver Community Group drafted ambitious design principles and requirements. You can read about what the Silver Community Group are currently working on, and decide whether you would like to get involved now, or at a later stage.

Emphasise expertise over empathy

Remember that today’s theme is “Promoting the participation of persons with disabilities and their leadership: taking action on the 2030 Development Agenda”. (The United Nations’ 2030 Development Agenda is outside the scope of this article, but if you’re looking to be inspired, read Alessia Aquaro’s article on Public Digital’s blog about how digital government can contribute to the UN’s Sustainable Development Goals.) In line with this theme, if you don’t have a disability and you want to contribute to the Silver Community Group, resist the temptation to try to empathise with people with disabilities. Instead, take 21 minutes during this festive season to enjoy the brilliant Liz Jackson explaining how empathy reifies disability stigmas, and follow her advice.

Choose the right route

I think we can expect the next Accessibility Guidelines to make their way into international standards and international law, just like their predecessors. We can also expect successful companies to apply them at scale. If you contribute to developing those guidelines, you can help to make sure that as many people as possible will be able to access digital information and services, in an era when that access will be crucial to every aspect of people’s lives. As Cennydd Bowles explained in “Building Better Worlds”, “There is no such thing as the future. There are instead a near-infinity of potential futures. The road as-yet-untravelled stretches before us in abundant directions. We get to choose the route. There is no fate but what we make.”


About the author

Alan Dalton worked for Ireland’s National Disability Authority for 9½ years, mostly as Accessibility Development Advisor. That involved working closely with public sector bodies to make websites, services, and information more accessible to all users, including users with disabilities. Before that, he was a consultant and trainer for Software Paths Ltd. in Dublin. In his spare time, he maintains StrongPasswordGenerator.com to help people stay safe online, tweets, and takes photos.

More articles by Alan




el

Kitsch and tell

A burst of colours, quirky motifs and all things India-inspired... A. SHRIKUMAR hands out tips on how to embrace this trend