Skip to content

feat(api, robot-server, shared-data, app, components, protocol-designer): add ability to use load_module on the vacuum module + remove millipore references.#21076

Merged
vegano1 merged 4 commits intoedgefrom
vacuum-module-load-module
Mar 20, 2026
Merged

feat(api, robot-server, shared-data, app, components, protocol-designer): add ability to use load_module on the vacuum module + remove millipore references.#21076
vegano1 merged 4 commits intoedgefrom
vacuum-module-load-module

Conversation

@vegano1
Copy link
Contributor

@vegano1 vegano1 commented Mar 20, 2026

Overview

A few sets of changes are needed to enable the protocol engine work and remove Millipore references from the module.

Test Plan and Hands-on Testing

  • The following protocol should analyze correctly
from opentrons.hardware_control.modules.types import VacuumModuleModel
from opentrons.protocol_api import ProtocolContext


metadata = {
    "protocolName": "Load the Vacuum Module",
    "author": "Opentrons <protocols@opentrons.com>",
}
requirements = {
    "robotType": "Flex",
    "apiLevel": "2.28",
}


def run(ctx: ProtocolContext) -> None:
    """Protocol."""

    # Create a virtual vm if one does not exist
    vm = [m for m in ctx._hw_manager.hardware.attached_modules if m.serial_number == "VMA1020250119002"]
    if not vm:
        ctx._hw_manager.hardware.create_simulating_module(VacuumModuleModel.VACUUM_MODULE_MILLIPORE_V1, "VMA1020250119002")

    # Load Modules
    vm_mod  = ctx.load_module( module_name="vacuumModuleMilliporeV1", location="A3")

Changelog

  • Add the ability to load the module to create basic scaffolding for protocol engine work
  • Remove the references for the Millipore variant of the vacuum module since we no longer need it
  • Add vacuumModuleV1DockA4 and remove A4 as an addressable area from vacuumModuleV1
  • Add the ability to create simulated modules with specific serial numbers to enable testing

Review requests

Risk assessment

Low, unreleased

…er): add ability to use load_module on the vacuum module + remove millipore references.
@vegano1 vegano1 requested review from a team as code owners March 20, 2026 18:06
@vegano1 vegano1 requested review from caila-marashaj and ncdiehl11 and removed request for a team March 20, 2026 18:06
@codecov
Copy link

codecov bot commented Mar 20, 2026

Codecov Report

❌ Patch coverage is 84.37500% with 5 lines in your changes missing coverage. Please review.
✅ Project coverage is 56.88%. Comparing base (d7c1a29) to head (f594df4).
⚠️ Report is 38 commits behind head on edge.

Files with missing lines Patch % Lines
app/src/organisms/ModuleCard/ModuleSetupModal.tsx 33.33% 2 Missing ⚠️
shared-data/js/fixtures.ts 33.33% 2 Missing ⚠️
...hardware-sim/DeckConfigurator/VacuumModuleItem.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             edge   #21076      +/-   ##
==========================================
- Coverage   56.88%   56.88%   -0.01%     
==========================================
  Files        3991     3991              
  Lines      330455   330510      +55     
  Branches    46660    46682      +22     
==========================================
+ Hits       187990   188016      +26     
- Misses     142243   142272      +29     
  Partials      222      222              
Flag Coverage Δ
app 45.21% <78.12%> (-0.01%) ⬇️
protocol-designer 19.97% <68.75%> (+<0.01%) ⬆️
step-generation 5.70% <53.12%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...rc/local-resources/modules/utils/getModuleImage.ts 87.09% <100.00%> (ø)
app/src/organisms/ModuleCard/utils.ts 79.68% <100.00%> (ø)
...nts/src/hardware-sim/DeckConfigurator/constants.ts 100.00% <100.00%> (ø)
...omponents/organisms/HardwareConfigurator/utils.tsx 65.50% <100.00%> (ø)
...designer/src/pages/Designer/DeckSetup/constants.ts 88.14% <100.00%> (ø)
...col-designer/src/pages/Designer/DeckSetup/utils.ts 34.71% <100.00%> (ø)
shared-data/js/constants.ts 100.00% <100.00%> (ø)
.../js/helpers/deckConfiguration/getVisualSlotFrom.ts 96.29% <100.00%> (ø)
shared-data/js/modules.ts 94.64% <100.00%> (ø)
...-data/python/opentrons_shared_data/module/types.py 100.00% <ø> (ø)
... and 3 more

... and 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

@ryanthecoder ryanthecoder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VacumeModuleMillipore

@koji
Copy link
Contributor

koji commented Mar 20, 2026

for lint-js erros

yarn prettier -w app/src/organisms/ModuleCard/__tests__/ModuleOverflowMenu.test.tsx protocol-designer/src/pages/Designer/DeckSetup/__tests__/utils.test.ts protocol-designer/src/pages/Designer/DeckSetup/constants.ts protocol-designer/src/pages/Designer/ProtocolSteps/Timeline/__tests__/AddStepButton.test.tsx shared-data/js/constants.ts shared-data/js/types.ts

Copy link
Contributor

@CaseyBatten CaseyBatten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good, just a question below on a detail of the deck definition

},
{
"id": "vacuumModuleV1DockA4",
"areaType": "lidDock",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this "lidDock" area type correct for this definition?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah it is, the dock for this module is only accessible by one type of labware at the moment.

Copy link
Contributor

@caila-marashaj caila-marashaj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the protocol_engine VacuumModuleSubstate stuff be a part of this?

Copy link
Contributor

@CaseyBatten CaseyBatten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Copy link
Contributor

@caila-marashaj caila-marashaj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, ty!

@vegano1 vegano1 added the gen-analyses-snapshot-pr Generate a healing PR if the analyses snapshot test fails label Mar 20, 2026
@github-actions
Copy link
Contributor

A PR has been opened to address analyses snapshot changes. Please review the changes here: #21082

…ots (#21082)

This PR was requested on the PR
#21076

Co-authored-by: vegano1 <12740774+vegano1@users.noreply.github.com>
@vegano1 vegano1 merged commit 62b2d83 into edge Mar 20, 2026
127 checks passed
@vegano1 vegano1 deleted the vacuum-module-load-module branch March 20, 2026 21:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gen-analyses-snapshot-pr Generate a healing PR if the analyses snapshot test fails

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants