Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
6c33992
WWSTCERT-9153 Leviton Decora Smart Wi-Fi (3rd Gen) 15A Switch
greens Dec 1, 2025
ff4ea0d
CHAD-17070: zigbee-lock lazy loading of subdrivers
aleclorimer Nov 17, 2025
ef1fcda
hotfix/CHAD-17070: Added test and reverting of dropped `can_handle` i…
aleclorimer Feb 18, 2026
58de43e
CHAD-17079: zigbee-valve lazy load sub-drivers
aleclorimer Nov 17, 2025
fafa569
CHAD-17089: zwave-lock lazy loading of subdrivers
aleclorimer Nov 17, 2025
91b1c71
CHAD-17094: zwave-smoke-alarm lazy loading of sub-drivers
aleclorimer Nov 17, 2025
71e5828
CHAD-17083: zigbee-window-treatment lazy loading of sub-drivers
aleclorimer Nov 17, 2025
7ad3fd3
Merge pull request #2788 from SmartThingsCommunity/hotfix/zigbee-lock…
aleclorimer Feb 24, 2026
b6b1ec1
Merge pull request #2648 from SmartThingsCommunity/zwave-smoke-alarm-…
aleclorimer Feb 24, 2026
d953669
Merge pull request #2644 from SmartThingsCommunity/zwave-lock-lazy-lo…
aleclorimer Feb 24, 2026
ba31f6d
Merge pull request #2635 from SmartThingsCommunity/zigbee-valve-lazy-…
aleclorimer Feb 24, 2026
6a24190
Merge pull request #2638 from SmartThingsCommunity/zigbee-window-trea…
aleclorimer Feb 24, 2026
314b662
WWSTCERT-10426 Halo Select Plus
greens Feb 24, 2026
a2a8611
Increase Z-Wave driver coverage
cjswedes Feb 20, 2026
fb5a39e
WWSTCERT-10480 GELUBU Door Lock G30
greens Feb 24, 2026
5db65f3
Merge pull request #2793 from SmartThingsCommunity/chore/increase-zwa…
cjswedes Feb 24, 2026
f085dce
Merge pull request #2806 from SmartThingsCommunity/new_device/WWSTCER…
greens Feb 24, 2026
d4647ea
Merge pull request #2591 from SmartThingsCommunity/new_device/WWSTCER…
greens Feb 24, 2026
3087d96
revert the recent profile components check additions
hcarter-775 Feb 25, 2026
f343c8b
Merge pull request #2809 from SmartThingsCommunity/revert/component-c…
hcarter-775 Feb 25, 2026
48451c8
Improve Zigbee driver test coverage
cjswedes Feb 24, 2026
eb70a7c
Change the icon for the Matter Ikea knob and dual button
inasail Feb 27, 2026
1b65894
Merge pull request #2814 from inasail/CHAD-17680
hcarter-775 Feb 27, 2026
6118ebf
Merge pull request #2813 from SmartThingsCommunity/chore/improve-zigb…
cjswedes Feb 27, 2026
0298090
Matter Camera: Remove trigger before zone (#2816)
nickolas-deboom Mar 2, 2026
a5c8b2a
Fixed pre-commit script misread binaries and allowing for copyright s…
aleclorimer Mar 3, 2026
1437942
fingerprints for Zooz sensors: ZSE11 (WWSTCERT-10463) , ZSE41 (WWSTCE…
KKlimczukS Mar 3, 2026
417f1fc
CHAD-17711 Adds missing fix from BUG2-532 for Stelpro Ki Zigbee therm…
greens Mar 3, 2026
6348926
Merge pull request #2819 from SmartThingsCommunity/fixup/pre-commmit-…
aleclorimer Mar 3, 2026
63e87c3
Matter Camera: fix gating of audioRecording capability (#2820)
nickolas-deboom Mar 3, 2026
8855768
CHAD-12653 Zigbee: Add support for reading ColorTemperatureRange
greens Feb 13, 2026
ca15bee
WWSTCERT-10528 HAOJAI Smart Switch
greens Mar 4, 2026
a94358e
Merge pull request #2779 from SmartThingsCommunity/feature/color_temp…
greens Mar 4, 2026
4351e1b
Merge pull request #2823 from SmartThingsCommunity/new_device/WWSTCER…
greens Mar 4, 2026
ae55d8f
WWSTCERT-10511/WWSTCERT-10514 Add support to frient smoke co sensor (…
marcintyminski Mar 4, 2026
53cde25
Matter Switch: Subscribe to power topology attributes rather than rea…
hcarter-775 Mar 5, 2026
ca35b31
WWSTCERT-10426 Halo Select Plus (#2804)
greens Mar 5, 2026
1f63cb0
Revert "Merge pull request #2823 from SmartThingsCommunity/new_device…
greens Mar 5, 2026
4023d4d
Merge pull request #2824 from SmartThingsCommunity/revert/WWSTCERT-10528
greens Mar 5, 2026
9ff09da
CHAD-17683: Tagging passing tests with min_api_version=19
aleclorimer Mar 3, 2026
67a6c27
Merge pull request #2817 from SmartThingsCommunity/CHAD-17683-tagging…
aleclorimer Mar 5, 2026
5f57d3a
Remove keying off client clusters in matter-camera
samadDotDev Mar 6, 2026
7cd0ed5
Merge pull request #2827 from SmartThingsCommunity/fix/matter-webrtc
samadDotDev Mar 9, 2026
7963cfe
Matter Camera: Support additional setStream attributes (#2786)
nickolas-deboom Mar 9, 2026
f1ffe32
NodOn fingerprint ( WWSTCERT-9497) (#2713)
KKlimczukS Mar 9, 2026
b82b7e1
WWSTCERT-10559/10562/10565/10568 add driver to frient EMI devices (#2…
marcintyminski Mar 9, 2026
059fac8
WWSTECERT-10553 Hager matter 2 buttons (battery)
greens Mar 9, 2026
48234b5
WWSTECERT-10553 Hager matter 2 buttons (battery) (#2832)
greens Mar 10, 2026
752a2ce
Merge pull request #2821 from SmartThingsCommunity/bugfix/CHAD-17711
greens Mar 10, 2026
b0cfc99
Update digital key event (#2829)
HunsupJung Mar 11, 2026
55d5a10
Matter Ikea Dual Button: Added missing refresh on embedded device config
sangheedotkim Mar 11, 2026
3056caf
Postpone updating commandResult (#2765)
HunsupJung Mar 11, 2026
2ba57d2
Limit the length of User Name (#2764)
HunsupJung Mar 11, 2026
71f5324
Remove garbage file (#2835)
HunsupJung Mar 12, 2026
4b938b3
move AttributeList read to subscribe
hcarter-775 Mar 6, 2026
610e056
Merge pull request #2828 from SmartThingsCommunity/add/power-source-s…
hcarter-775 Mar 12, 2026
a189801
WWSTCERT-10643: Govee TV Light Bar
greens Mar 12, 2026
812b71a
WWSTCERT-10665: Lifx Ceiling 13
greens Mar 12, 2026
e121462
Matter Ikea Scroll: Changed to use custom presentation (#2825)
sangheedotkim Mar 13, 2026
4f0af0c
Merge pull request #2838 from SmartThingsCommunity/new_device/WWSTCER…
greens Mar 16, 2026
855b3fb
Merge pull request #2837 from SmartThingsCommunity/new_device/WWSTCER…
greens Mar 16, 2026
1ad90e9
Merge pull request #2834 from sangheedotkim/feature/matter-ikea-2-button
hcarter-775 Mar 18, 2026
4b4a24c
Add lockAlarm configuration to do_configure (#2763)
HunsupJung Mar 19, 2026
6b9330d
WWSTCERT-9820 Add matter devcie:CS-T35 (#2499)
caowei-cccc Mar 20, 2026
dabfc3e
WWSTCERT-10533 TARUIE AC Remote (#2822)
greens Mar 24, 2026
0e8b55e
WWSTCERT-10572 Decora Smart Wi-Fi (2ndGen) Fan Speed Controller (#2833)
greens Mar 24, 2026
6a322b5
[Aqara/Locks] Improvement of credential info management (#2712)
seojune79 Mar 24, 2026
a291415
in infoChanged handler, update profile_changed across drivers
hcarter-775 Feb 25, 2026
2b5a958
add HAOJAI Smart Switch 3-key and HAOJAI Smart Switch 6-key (#2839)
Trfwww Mar 24, 2026
517b91f
Merge pull request #2812 from SmartThingsCommunity/update/profile-che…
hcarter-775 Mar 24, 2026
60f9bbe
Support keypair generation (#2815)
HunsupJung Mar 25, 2026
edfba7e
Support DPS feature (#2750)
HunsupJung Mar 25, 2026
4f8bdd0
WWST-10552 Update IKEA Matter device labels to match the catalog
tpmanley Mar 25, 2026
6daffd8
Merge pull request #2853 from SmartThingsCommunity/feature/ikea-names
tpmanley Mar 26, 2026
0ecff79
Reprofile on SW change of camera
samadDotDev Mar 24, 2026
2b87fc3
Merge pull request #2845 from SmartThingsCommunity/reprofile-on-camer…
samadDotDev Mar 26, 2026
6b38aef
WWSTCERT-10808 Sombra Shades WM25/L-Z (#2848)
cbaumler Mar 27, 2026
144ddea
update default mired values in stateless color temp step handler
hcarter-775 Mar 26, 2026
905bf50
Setting up driver tests to run against previous versions of lua libs …
aleclorimer Mar 24, 2026
310e7e0
Merge pull request #2852 from SmartThingsCommunity/jenkins-backwards-…
aleclorimer Mar 27, 2026
30ec193
Revert "Support DPS feature (#2750)"
ctowns Mar 30, 2026
dbaa2e1
Merge pull request #2859 from SmartThingsCommunity/revert-dps
ctowns Mar 31, 2026
9d979f1
WWST add support for Zooz ZEN05 (#2843)
jtp10181 Mar 31, 2026
7735fa8
update deep_equals in other drivers
hcarter-775 Apr 1, 2026
e9d9394
update next to __pairs, rawget to __index (#2865)
hcarter-775 Apr 1, 2026
b5e30c3
Merge branch 'beta' into main
ctowns Apr 1, 2026
3648699
Remove duplicate code from bad merge (#2872)
ctowns Apr 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
44 changes: 44 additions & 0 deletions .github/workflows/jenkins-driver-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Run Jenkins driver tests
on:
pull_request:
paths:
- 'drivers/**'

jobs:
trigger-driver-test:
strategy:
matrix:
version:
[ 60 ]

runs-on: ubuntu-latest
steps:

- name: Create Commit Status (Pending)
id: status
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
with:
script: |
core.setOutput('status_url', (await github.rest.repos.createCommitStatus({
owner: context.repo.owner,
repo: context.repo.repo,
sha: context.sha,
state: 'pending',
description: 'Jenkins job triggered...',
context: 'Driver Tests (${{ matrix.version }})'
})).data.url);
- name: Trigger Jenkins Generic Webhook
env:
JENKINS_WEBHOOK_TOKEN: ${{ secrets.JENKINS_WEBHOOK_TOKEN }}
JENKINS_WEBHOOK_URL: ${{ secrets.JENKINS_WEBHOOK_URL }}
STATUS_URL: ${{ steps.status.outputs.status_url }}
run: |
set +x
curl -s -o /dev/null -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${JENKINS_WEBHOOK_TOKEN}" \
-d "{\"status_url\": \"$STATUS_URL\",
\"version\": ${{ matrix.version }},
\"commit\": ${{ github.event.pull_request.head.sha }} }" \
"${JENKINS_WEBHOOK_URL}"
set -x
43 changes: 1 addition & 42 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,51 +39,10 @@ jobs:
id: cache_key
run: echo "CACHE_KEY=${{ steps.lib-version.outputs.url }}-v1" >> $GITHUB_OUTPUT

get-dev-artifact:
runs-on: ubuntu-latest
outputs:
cache_key: ${{ steps.cache_key.outputs.CACHE_KEY }}
if: ${{ contains(join(github.event.pull_request.labels.*.name), 'release-') && github.event.pull_request.head.repo.fork != 'true' }}
steps:
- name: Get the version from the label
id: label-version
run: |
echo "${{ join(github.event.pull_request.labels.*.name) }}" | grep -oP "release-\d+.\d+" | xargs > out
echo "LIBRARY_VERSION=$(cat out)" >> $GITHUB_OUTPUT
mkdir /home/runner/work/lua_libs
- name: Find latest artifact
id: latest
env:
ARTIFACTORY_URL: ${{ format('https://smartthings.jfrog.io/artifactory/edge-driver-libs/{0}/', steps.label-version.outputs.LIBRARY_VERSION) }}
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
run: |
wget --user=$ARTIFACTORY_USERNAME --password=$ARTIFACTORY_PASSWORD $ARTIFACTORY_URL -q -O - | grep '.zip' | awk -F' ' '{print $3"-"$4"\t"$2}' | sort -t - -k3n -k2M -k1n -k4n | tail -1 | grep -o 'lua_libs_[a-z0-9_]*.zip' | head -1 > out
echo "ZIP_FILE=$(cat out)" >> $GITHUB_OUTPUT
- name: Try to retrieve cache
id: cached-libs
uses: actions/cache@v3
with:
path: '/home/runner/work/lua_libs'
key: ${{ steps.latest.outputs.ZIP_FILE }}-v1
- name: Download and unpack specified version
if: steps.cached-libs.outputs.cache-hit != 'true'
env:
ARTIFACTORY_URL: ${{ format('https://smartthings.jfrog.io/artifactory/edge-driver-libs/{0}/{1}', steps.label-version.outputs.LIBRARY_VERSION, steps.latest.outputs.ZIP_FILE) }}
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
working-directory: '/home/runner/work/lua_libs'
run: |
wget --user=$ARTIFACTORY_USERNAME --password=$ARTIFACTORY_PASSWORD $ARTIFACTORY_URL -O lua_libs.zip
unzip lua_libs.zip
- name: Set output
id: cache_key
run: echo "CACHE_KEY=${{ steps.latest.outputs.ZIP_FILE }}-v1" >> $GITHUB_OUTPUT

run-driver-tests:
runs-on: ubuntu-latest
needs:
[ get-latest-release-artifact, get-dev-artifact ]
[ get-latest-release-artifact ]
if: ${{ always() && contains(needs.*.result, 'success') && !contains(needs.*.result, 'failure') }}
steps:
- name: Set cache key
Expand Down
14 changes: 13 additions & 1 deletion drivers/SmartThings/matter-appliance/src/test/test_cook_top.lua
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,10 @@ test.register_coroutine_test(
local component_to_endpoint_map = mock_device:get_field("__component_to_endpoint_map")
assert(component_to_endpoint_map["cookSurfaceOne"] == COOK_SURFACE_ONE_ENDPOINT, "Cook Surface One Endpoint must be 2")
assert(component_to_endpoint_map["cookSurfaceTwo"] == COOK_SURFACE_TWO_ENDPOINT, "Cook Surface Two Endpoint must be 3")
end
end,
{
min_api_version = 19
}
)

test.register_message_test(
Expand All @@ -112,6 +115,9 @@ test.register_message_test(
clusters.OnOff.server.commands.Off(mock_device, COOK_TOP_ENDPOINT)
}
}
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -149,6 +155,9 @@ test.register_message_test(
clusters.TemperatureControl.server.commands.SetTemperature(mock_device, COOK_SURFACE_TWO_ENDPOINT, nil, 0) --0 is the index where Level1 is stored.
}
},
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -181,6 +190,9 @@ test.register_message_test(
direction = "send",
message = mock_device:generate_test_message("cookSurfaceTwo", capabilities.temperatureMeasurement.temperature({ value = 20.0, unit = "C" }))
}
},
{
min_api_version = 19
}
)

Expand Down
24 changes: 24 additions & 0 deletions drivers/SmartThings/matter-appliance/src/test/test_dishwasher.lua
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ test.register_message_test(
clusters.OnOff.server.commands.Off(mock_device, APPLICATION_ENDPOINT)
}
}
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -166,6 +169,9 @@ test.register_message_test(
}))
}
}, -- on receiving NO ERROR we don't do anything.
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -231,6 +237,9 @@ test.register_message_test(
}))
}
}, -- on receiving NO ERROR we don't do anything.
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -296,6 +305,9 @@ test.register_message_test(
}))
}
}, -- on receiving NO ERROR we don't do anything.
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -372,6 +384,9 @@ test.register_message_test(
}))
}
}, -- on receiving NO ERROR we don't do anything.
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -433,6 +448,9 @@ test.register_message_test(
clusters.DishwasherMode.server.commands.ChangeToMode(mock_device, APPLICATION_ENDPOINT, 1) --1 is the index where Super Dry is stored.
}
}
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -470,6 +488,9 @@ test.register_message_test(
clusters.TemperatureControl.server.commands.SetTemperature(mock_device, APPLICATION_ENDPOINT, nil, 0) --0 is the index where Level1 is stored.
}
},
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -526,6 +547,9 @@ test.register_message_test(
clusters.TemperatureControl.commands.SetTemperature(mock_device, APPLICATION_ENDPOINT, 40 * 100, nil)
}
},
},
{
min_api_version = 19
}
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,9 @@ test.register_message_test(
clusters.FanControl.attributes.PercentSetting:write(mock_device, 1, 50)
}
}
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -245,6 +248,9 @@ test.register_message_test(
direction = "send",
message = mock_device:generate_test_message("main", capabilities.fanMode.fanMode("auto"))
}
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -331,6 +337,9 @@ test.register_message_test(
clusters.FanControl.attributes.FanMode:write(mock_device, 1, clusters.FanControl.types.FanModeEnum.AUTO)
}
}
},
{
min_api_version = 19
}
)
test.register_message_test(
Expand Down Expand Up @@ -441,6 +450,9 @@ test.register_message_test(
capabilities.fanMode.fanMode.high.NAME
}, {visibility={displayed=false}}))
}
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -476,6 +488,9 @@ test.register_message_test(
direction = "send",
message = mock_device:generate_test_message("main", capabilities.windMode.windMode.naturalWind())
}
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -514,6 +529,9 @@ test.register_message_test(
clusters.FanControl.attributes.WindSetting:write(mock_device, 1, clusters.FanControl.types.WindSettingMask.NATURAL_WIND)
}
}
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -572,6 +590,9 @@ test.register_message_test(
direction = "send",
message = mock_device:generate_test_message("hepaFilter", capabilities.filterStatus.filterStatus.replace())
},
},
{
min_api_version = 19
}
)

Expand Down Expand Up @@ -630,6 +651,9 @@ test.register_message_test(
direction = "send",
message = mock_device:generate_test_message("activatedCarbonFilter", capabilities.filterStatus.filterStatus.replace())
},
},
{
min_api_version = 19
}
)

Expand All @@ -640,7 +664,10 @@ test.register_coroutine_test(
mock_device_onoff:expect_metadata_update({ profile = "extractor-hood-wind-light" })
mock_device_onoff:expect_metadata_update({ provisioning_state = "PROVISIONED" })
end,
{ test_init = test_init_onoff }
{
test_init = test_init_onoff,
min_api_version = 19
}
)

test.register_coroutine_test(
Expand All @@ -663,7 +690,10 @@ test.register_coroutine_test(
clusters.OnOff.server.commands.Off(mock_device_onoff, 2)
})
end,
{ test_init = test_init_onoff }
{
test_init = test_init_onoff,
min_api_version = 19
}
)

test.register_coroutine_test(
Expand All @@ -684,7 +714,10 @@ test.register_coroutine_test(
mock_device_onoff:generate_test_message("light", capabilities.switch.switch.off())
)
end,
{ test_init = test_init_onoff }
{
test_init = test_init_onoff,
min_api_version = 19
}
)

test.run_registered_tests()
Loading
Loading