#                                               |
#   _` |  __ \    _` |   __|   _ \   __ \    _` |   _` |
#  (   |  |   |  (   |  (     (   |  |   |  (   |  (   |
# \__,_| _|  _| \__,_| \___| \___/  _|  _| \__,_| \__,_|

import sys
import math
import operator as op
from functools import reduce
from bisect import *
from collections import deque

## I/O ##
def read_line():
    return sys.stdin.readline()[:-1]
 
def read_int():
    return int(sys.stdin.readline())
    
def read_int_line():
    return [int(v) for v in sys.stdin.readline().split()]

def read_float_line():
    return [float(v) for v in sys.stdin.readline().split()]
## ##

## ncr ##
def ncr(n, r):
    r = min(r, n-r)
    numer = reduce(op.mul, range(n, n-r, -1), 1)
    denom = reduce(op.mul, range(1, r+1), 1)
    return numer / denom
## ##

## Fenwick Tree ##
N = int(1e6)+10
fenwick = [0]*N

def add(i,x,n):
	while i<n:
		fenwick[i]+=x
		i = i|(i+1)

def fsum(i,n):
	res = 0
	while i>=0:
		res += fenwick[i]
		i = (i&(i+1))-1
	return res

def fsum_range(i,j,n):
	return fsum(j,n)-fsum(i-1,n)
## ##	

## Main ##

mod = int(1e9)+7
mod2 = 998244353

def N(s):
	x = s[0]
	y = s[1]

	neighbor = []

	if x>0:
		neighbor.append((x-1,y))
	if x<n-1:
		neighbor.append((x+1,y))
	if y>0:
		neighbor.append((x,y-1))
	if y<m-1:
		neighbor.append((x,y+1))

	return neighbor


t = read_int()
# t = 1
for i in range(t):
	n, m = read_int_line()
	a = []
	for i in range(n):
		r = read_line()
		a.append(r)

	cnt = 0

	b = [[0 for i in range(m)] for j in range(n)]
	for i in range(n):
		for j in range(m):
			if a[i][j]=="G":
				b[i][j] = 1
				cnt+=1
			elif a[i][j] == ".":
				b[i][j] = 0
			elif a[i][j] == "B":
				b[i][j] = 2
			else:
				b[i][j] = 3

	vis = [[False for i in range(m)] for j in range(n)]

	q = deque()
	q.append((n-1,m-1))
	vis[n-1][m-1] = True
	while len(q)!=0:
		s = q.popleft()
		for i in N(s):
			x = i[0]
			y = i[1]
			if not vis[x][y] and b[x][y] != 3:
				q.append(i)
				vis[x][y] = True

	f = True
	for i in range(n):
		for j in range(m):
			if b[i][j] == 2 and vis[i][j]:
				v = N((i,j))
				for k in v:
					x = k[0]
					y = k[1]
					if b[x][y] == 0 and vis[x][y] == True:
						b[x][y] = 3


	vis = [[False for i in range(m)] for j in range(n)]

	if b[n-1][m-1] == 3 and cnt==0:
		print("Yes")
		continue
	elif b[n-1][m-1] == 3:
		print("No")
		continue

	q = deque()
	q.append((n-1,m-1))
	vis[n-1][m-1] = True
	while len(q)!=0:
		s = q.popleft()
		for i in N(s):
			x = i[0]
			y = i[1]
			if not vis[x][y] and b[x][y] != 3:
				q.append(i)
				vis[x][y] = True

	for i in range(n):
		for j in range(m):
			if b[i][j] == 2 and vis[i][j]:
				f = False
				break
			if b[i][j] == 1 and not vis[i][j]:
				f = False
				break


	if f:
		print("Yes")
	else:
		print("No")





