Skip to content

Refactor Cytosnap to use Playwright #254

@maxkfranz

Description

@maxkfranz

Background

Describe the current state of the project and the main problem or issue being addressed by the proposed idea. Details should include links and references.

  • Cytosnap is a package to render and export Cytoscape.js graphs as various image formats.
  • Cytosnap currently uses Puppeteer to do this, and Puppeteer has several maintenance and compatibility issues.
  • Playwright is a newer alternative to Puppeteer, which would address these issues.
  • Skia Canvas is a lighter-weight alternative to Puppeteer and Playwright, which could simplify deployment. Skia Canvas only supports rendering the HTML5 <canvas> API as an exported image, whereas Playwright includes a full browser environment.

Goal

Describe what the end result of the GSoC project should be.

  1. Refactor Cytosnap to use Playwright instead of Puppeteer.
  2. Add Playwright tests to ensure that the refactored Cytosnap project is working properly according to the Cytosnap public API.
  3. Configure GitHub Actions to automatically run the new Playwright tests on new commits and pull requests.
  4. Add support for using Skia Canvas.
  5. This would be enabled with an option like engine: 'skia'.
  6. Use Playwright if the user specifies engine: 'playwright'. Cytosnap should support both.
  7. Mark Skia Canvas and Playwright as optional dependencies. The user can decide which to install based on which he wants to use in his project.
  8. Add automated tests using Mocha for engine: 'skia'.

Difficulty Level: Easy/Medium/Hard

Give a difficulty level, either Easy, Medium or Hard. Make sure to tag the issue with this difficulty.
Describe with a sentence or two why the project is this difficulty level.

Easy if:

  • The applicant has prior experience with JS and Node.js.
  • The applicant has experience with JS build systems, like Webpack or Vite.

Size and Length of Project

Define the project commitment as either “small: 90 hours", "medium: 175 hours" or "large: 350 hours" and the timeline between 10 and 22 weeks, for example:

  • medium: 175 hours
  • 12 weeks

Note that the project length for small projects should be 10-12 weeks.

Skills

List skills/technologies that the student should be familiar with. Also tag the issue with these.

Essential skills:

  • JS (significant experience with the language & modern tooling)

Nice to have skills, from most to least important:

  • The HTML5 canvas API
  • Headless browsers / rendering: Puppeteer, Playwright, Skia Canvas, Selenium, etc.
  • Build systems like Webpack or Vite
  • GitHub Actions

Public Repository

Link to a public, open-source repository for your project. All code from accepted projects must be open source and public throughout the coding period and beyond.

https://github.com/cytoscape/cytosnap

Potential Mentors

List the names and email contacts for potential mentors.

  • Max Franz
  • Mike Kucera
  • Gary Bader

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions