Skip to content

Commit ea1ae58

Browse files
authored
Updated List. Created a new script (#803)
* Script to identify old events * Updated list * New tool for identifying updates necessary
1 parent 28a9756 commit ea1ae58

File tree

4 files changed

+201
-47
lines changed

4 files changed

+201
-47
lines changed

.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ _site
22
.sass-cache
33
.DS_Store
44

5-
# IntelliJ IDE
6-
/.idea/
5+
6+
# Script output
7+
tmp/pending_updates.yml

_data/current.yml

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,3 @@
1-
- name: "TestFlix 2025 - World’s Leading Virtual Software Testing Conference"
2-
location: Online
3-
dates: "October 10-11, 2025"
4-
url: https://www.thetesttribe.com/testflix/?utm_source=testingconferences
5-
status: Registration is Open and Free
6-
7-
- name: Pacific Northwest Software Quality Conference (PNSQC) 2025
8-
location: Portland, Oregon, USA and Online
9-
dates: "October 13-15, 2025"
10-
url: https://www.pnsqc.org/?utm_source=testingconferences
11-
twitter: PNSQC
12-
status: <a href="https://mms.pnsqc.org/members/evr/reg_event.php?orgcode=PNSQ&evid=52209629" target="_blank">Registration is Open</a>
13-
14-
- name: HUSTEF Software Testing Conference 2025
15-
location: Budapest, Hungary
16-
dates: "October 14-16, 2025"
17-
url: https://hustef.hu/?utm_source=testingconferences
18-
twitter: HunTestingBoard
19-
status: Registration is Open
20-
21-
- name: "Quality Beacon - Lighting the Path for Next-Gen Testing"
22-
location: Copenhagen, Denmark
23-
dates: "October 20-21, 2025"
24-
url: https://www.dstb.dk/konferencer/2025/?utm_source=testingconferences
25-
status: Registration is Open until October 6, 2025
26-
27-
- name: CypressConf 2025
28-
location: Online
29-
dates: "October 21-22, 2025"
30-
url: https://cypress.registration.goldcast.io/events/5e06455f-45f2-49c3-98dd-e0ae952e79a0?__hstc=204449871.f2117c4cea0098a12902ced8536e8ec7.1751241536846.1751241536846.1751241536846.1&__hssc=204449871.1.1751241536846&__hsfp=287177776?utm_source=testingconferences
31-
status: Registration is Open and Free
32-
331
- name: "TestCon Europe 2025"
342
location: Vilnius, Lithuania
353
dates: "October 21-24, 2025"
@@ -61,7 +29,7 @@
6129
dates: "October 27-30, 2025"
6230
url: https://starcanada.techwell.com/?utm_source=testingconferences
6331
twitter: TechWell
64-
status: <a href="https://starcanada.techwell.com?utm_source=testingconferences" target="_blank">Early Bird Registration</a> is Open until September 26, 2025
32+
status: <a href="https://starcanada.techwell.com?utm_source=testingconferences" target="_blank">Registration is Open</a>
6533

6634
- name: WOPR Latam 04
6735
location: Montevideo, UY
@@ -73,12 +41,13 @@
7341
dates: "November 10-11, 2025"
7442
url: https://automation.eurostarsoftwaretesting.com/?utm_source=testingconferences
7543
twitter: esconfs
76-
status: <a href="https://automation.eurostarsoftwaretesting.com/?utm_source=testingconferences" target="_blank">Early Bird Registration is Open</a> until September 30, 2025
44+
status: <a href="https://automation.eurostarsoftwaretesting.com/?utm_source=testingconferences" target="_blank">Registration is Open</a>
7745

7846
- name: Quality Sense Conf 2025
7947
location: Montevideo, Uruguay
8048
dates: "November 11, 2025"
8149
url: https://qualitysenseconf.com/?utm_source=testingconferences
50+
status: Registration is Open and Free
8251

8352
- name: Software-QS-Tag 2025
8453
location: Möhrendorf, Germany
@@ -98,7 +67,7 @@
9867
dates: "November 14, 2025"
9968
url: https://www.tokyotestfest.com/?utm_source=testingconferences
10069
twitter: tokyotestfest
101-
status: <a href="https://fienta.com/tokyotestfest2025/?utm_source=testingconferences" target="_blank">Early Bird Registration is Open</a>
70+
status: <a href="https://fienta.com/tokyotestfest2025/?utm_source=testingconferences" target="_blank">Registration is Open</a>
10271

10372
- name: Testing Assembly
10473
location: Helsinki, Finland
@@ -122,27 +91,27 @@
12291
- name: "Workshop: Find more bugs with Test Gap Analysis"
12392
location: Online
12493
dates: "December 3, 2025"
125-
url: https://tmscl.me/4ntgbEk
126-
status: <a href="https://tmscl.me/4ntgbEk" target="_blank">Registration is open</a>
94+
url: https://teamscale.com/events/tga-2025-12?utm_source=testingconferences
95+
status: <a href="https://teamscale.com/events/tga-2025-12?utm_source=testingconferences" target="_blank">Registration is Open</a>
12796

12897
- name: Robocon 2026 In Person
12998
location: Helsinki, Finland
130-
dates: "February 12-13, 2026"
99+
dates: "February 10-13, 2026"
131100
url: https://www.robocon.io/?utm_source=testingconferences
132-
status: <a href="https://pretalx.com/robocon-2026/cfp?utm_source=testingconferences" target="_blank">CFP is Open</a> until October 19, 2025
101+
status: <a href="https://www.robocon.io/tickets?utm_source=testingconferences" target="_blank">Blind Robot Registration is Open</a>
133102

134103
- name: Robocon 2026 Online
135104
location: Online
136-
dates: "March 4-5 March, 2026"
105+
dates: "March 3-6, 2026"
137106
url: https://www.robocon.io/?utm_source=testingconferences
138-
status: <a href="https://pretalx.com/robocon-2026/cfp?utm_source=testingconferences" target="_blank">CFP is Open</a> until October 19, 2025
107+
status: <a href="https://www.robocon.io/tickets?utm_source=testingconferences" target="_blank">Blind Robot Registration is Open</a>
139108

140109
- name: Testing Peers Conference 2026
141110
location: Nottingham, UK
142111
dates: "March 12, 2026"
143112
url: https://testingpeerscon.com/?utm_source=testingconferences
144113
twitter: testingpeers
145-
status: <a href="https://testingpeerscon.com/written-submission/?utm_source=testingconferences" target="_blank">CFP is Open</a> until September 30, 2025 | <a href="https://testingpeerscon.com/ticket/?utm_source=testingconferences" target="_blank">Early Bird Registration is Open</a>
114+
status: <a href="https://testingpeerscon.com/ticket/?utm_source=testingconferences" target="_blank">Early Bird Registration is Open</a>
146115

147116
- name: ParisTestConf 2026
148117
location: Paris, FR
@@ -174,7 +143,7 @@
174143
dates: "May 6-8, 2026"
175144
url: https://seleniumconf.com/?utm_source=testingconferences
176145
twitter: seleniumconf
177-
status: <a href="https://seleniumconf.com/submit-a-talk/?utm_source=testingconferences" target="_blank">CFP is Open</a> until October 19, 2025
146+
status: <a href="https://seleniumconf.com/register/?utm_source=testingconferences" target="_blank">Blind Early Bird</a> Registration is Open
178147

179148
- name: WeTest.Athens 2026
180149
location: Athens, Greece
@@ -187,11 +156,11 @@
187156
dates: "May 26-28, 2026"
188157
url: https://expoqa.eu/?utm_source=testingconferences
189158
twitter: expoqa
190-
status: <a href="https://expoqa.eu/call-for-speaker/?utm_source=testingconferences" target="_blank">CFP is Open</a> until October 12, 2025
159+
status: <a href="https://expoqa.eu/ticket-shop/?utm_source=testingconferences" target="_blank">Early Bird Registration is Open</a>
191160

192161
- name: EuroSTAR 2026 Software Testing Conference
193162
location: Oslo, Norway
194163
dates: "June 15-18, 2026"
195164
url: https://conference.eurostarsoftwaretesting.com/?utm_source=testingconferences
196165
twitter: esconfs
197-
status: <a href="https://conference.eurostarsoftwaretesting.com/call-for-submissions/?utm_source=testingconferences" target="_blank">CFP is Open</a> until October 3, 2025
166+
status: <a href="https://conference.eurostarsoftwaretesting.com/tickets/?utm_source=testingconferences" target="_blank">Super Early Bird</a> Pricing is Open

_data/past.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1+
- name: CypressConf 2025
2+
location: Online
3+
dates: "October 21-22, 2025"
4+
url: https://cypress.registration.goldcast.io/events/5e06455f-45f2-49c3-98dd-e0ae952e79a0?__hstc=204449871.f2117c4cea0098a12902ced8536e8ec7.1751241536846.1751241536846.1751241536846.1&__hssc=204449871.1.1751241536846&__hsfp=287177776?utm_source=testingconferences
5+
6+
- name: "Quality Beacon - Lighting the Path for Next-Gen Testing"
7+
location: Copenhagen, Denmark
8+
dates: "October 20-21, 2025"
9+
url: https://www.dstb.dk/konferencer/2025/?utm_source=testingconferences
10+
11+
- name: HUSTEF Software Testing Conference 2025
12+
location: Budapest, Hungary
13+
dates: "October 14-16, 2025"
14+
url: https://hustef.hu/?utm_source=testingconferences
15+
twitter: HunTestingBoard
16+
17+
- name: Pacific Northwest Software Quality Conference (PNSQC) 2025
18+
location: Portland, Oregon, USA and Online
19+
dates: "October 13-15, 2025"
20+
url: https://www.pnsqc.org/?utm_source=testingconferences
21+
twitter: PNSQC
22+
23+
- name: "TestFlix 2025 - World’s Leading Virtual Software Testing Conference"
24+
location: Online
25+
dates: "October 10-11, 2025"
26+
url: https://www.thetesttribe.com/testflix/?utm_source=testingconferences
27+
128
- name: TestSociety
229
location: Lisboa, Portugal
330
dates: "October 10, 2025"

tools/identify_updates.rb

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
#!/usr/bin/env ruby
2+
require 'yaml'
3+
require 'date'
4+
require 'fileutils'
5+
6+
DATA_DIR = File.expand_path('../_data', __dir__)
7+
CURRENT_FILE = File.join(DATA_DIR, 'current.yml')
8+
9+
OUTPUT_FILE = File.expand_path('../tmp/pending_updates.yml', __dir__)
10+
11+
if ARGV.empty?
12+
warn 'Usage: identify_updates.rb YYYY-MM-DD'
13+
exit 1
14+
end
15+
16+
begin
17+
today = Date.parse(ARGV[0])
18+
rescue ArgumentError
19+
warn "Invalid date: #{ARGV[0]}"
20+
exit 1
21+
end
22+
23+
unless File.exist?(CURRENT_FILE)
24+
warn "Could not find #{CURRENT_FILE}"
25+
exit 1
26+
end
27+
28+
current_events = YAML.load_file(CURRENT_FILE)
29+
30+
MONTH_PATTERN = '(?:January|February|March|April|May|June|July|August|September|October|November|December|Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec)'
31+
MONTH_REGEX = /#{MONTH_PATTERN}/i
32+
33+
def normalize_month(name)
34+
case name.downcase
35+
when 'jan' then 'January'
36+
when 'feb' then 'February'
37+
when 'mar' then 'March'
38+
when 'apr' then 'April'
39+
when 'may' then 'May'
40+
when 'jun' then 'June'
41+
when 'jul' then 'July'
42+
when 'aug' then 'August'
43+
when 'sep', 'sept' then 'September'
44+
when 'oct' then 'October'
45+
when 'nov' then 'November'
46+
when 'dec' then 'December'
47+
else
48+
name.capitalize
49+
end
50+
end
51+
52+
def build_date_from_components(month_name, day, year)
53+
month_index = Date::MONTHNAMES.index(month_name)
54+
return nil unless month_index
55+
56+
Date.new(year.to_i, month_index, day.to_i)
57+
rescue ArgumentError
58+
nil
59+
end
60+
61+
def parse_end_date(range_str)
62+
return nil if range_str.nil?
63+
64+
s = range_str.to_s.strip
65+
s = s.gsub(/[–—]/, '-')
66+
67+
# Handle ranges like "April 26 - May 1, 2026"
68+
if (m = s.match(/(#{MONTH_PATTERN})\s+(\d{1,2})\s*-\s*(#{MONTH_PATTERN})\s*(\d{1,2}),?\s*(\d{4})$/i))
69+
month2 = normalize_month(m[3])
70+
day2 = m[4]
71+
year = m[5]
72+
return build_date_from_components(month2, day2, year)
73+
end
74+
75+
# Handle ranges like "September 21-26, 2025"
76+
if (m = s.match(/(#{MONTH_PATTERN})\s+\d{1,2}\s*-\s*(\d{1,2}),?\s*(\d{4})$/i))
77+
month = normalize_month(m[1])
78+
day2 = m[2]
79+
year = m[3]
80+
return build_date_from_components(month, day2, year)
81+
end
82+
83+
# Handle single day "September 27, 2025"
84+
if (m = s.match(/(#{MONTH_PATTERN})\s+(\d{1,2}),?\s*(\d{4})$/i))
85+
month = normalize_month(m[1])
86+
day = m[2]
87+
year = m[3]
88+
return build_date_from_components(month, day, year)
89+
end
90+
91+
# Handle formats like "March 4-5 March, 2026"
92+
if (m = s.match(/(#{MONTH_PATTERN})\s+\d{1,2}\s*-\s*(\d{1,2})\s+(#{MONTH_PATTERN}),?\s*(\d{4})$/i))
93+
month = normalize_month(m[3])
94+
day = m[2]
95+
year = m[4]
96+
return build_date_from_components(month, day, year)
97+
end
98+
99+
# Fallback: let Date.parse try entire string
100+
Date.parse(s) rescue nil
101+
end
102+
103+
def extract_status_dates(status_text)
104+
return [] if status_text.nil?
105+
stripped = status_text.to_s.gsub(/<[^>]+>/, ' ')
106+
results = []
107+
108+
stripped.scan(/(#{MONTH_PATTERN}\s*\d{1,2}(?:\s*-\s*(?:#{MONTH_PATTERN})?\s*\d{1,2})?,?\s*\d{4})/i) do |match|
109+
segment = match.first
110+
end_date = parse_end_date(segment)
111+
results << { segment: segment.strip, date: end_date } if end_date
112+
end
113+
114+
results
115+
end
116+
117+
updates = []
118+
119+
current_events.each do |event|
120+
event_needs_move = false
121+
status_needs_update = false
122+
123+
end_date = parse_end_date(event['dates'])
124+
if end_date
125+
event_needs_move = true if end_date < today
126+
elsif event['dates'].to_s =~ /\d{4}/
127+
warn "Warning: could not parse end date for '#{event['name']}': #{event['dates']}"
128+
end
129+
130+
status_dates = extract_status_dates(event['status'])
131+
status_needs_update = status_dates.any? { |item| item[:date] && item[:date] < today }
132+
133+
updates << event.dup if event_needs_move || status_needs_update
134+
end
135+
136+
FileUtils.mkdir_p(File.dirname(OUTPUT_FILE))
137+
138+
formatted_entries = updates.map do |event|
139+
yaml = YAML.dump([event])
140+
lines = yaml.lines
141+
lines.shift if lines.first&.start_with?('---')
142+
lines.reject! { |line| line.strip == '...' }
143+
lines.map!(&:rstrip)
144+
lines.join("\n")
145+
end
146+
147+
File.open(OUTPUT_FILE, 'w') do |f|
148+
if formatted_entries.empty?
149+
f.write("# No events needing attention for #{today}\n")
150+
else
151+
f.write(formatted_entries.join("\n\n"))
152+
f.write("\n")
153+
end
154+
end
155+
156+
puts "Identified #{updates.size} events needing attention."
157+
puts "Details written to #{OUTPUT_FILE}."

0 commit comments

Comments
 (0)