import sys
input = lambda: sys.stdin.readline().rstrip()

mod = 10**9 + 7

t = int(input())
from collections import deque
def bfs(x, y):
    d = [[-1]*m for _ in range(n)]
    queue = deque([(x, y)])
    d[x][y] = 0
    while queue:
        x, y = queue.popleft()
        next_grid = [(x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)]
        for u, v in next_grid:
            #print(u, v)
            if not(0 <= u < n and 0 <= v < m) or d[u][v] >= 0:
                continue
            if g[u][v] == "#" or g[u][v] == "B":
                #print(u, v)
                continue
            next_next_grid = [(u + 1, v), (u - 1, v), (u, v + 1), (u, v - 1)]
            flag = 1
            for p, q in next_next_grid:
                if not(0 <= p < n and 0 <= q < m):
                    continue
                if g[p][q] == "B":
                    flag = 0
                    break
            if flag:
                d[u][v] = d[x][y] + 1
                queue.append((u, v))
    return d
 

for _ in range(t):
    n, m = map(int, input().split())
    g = []
    good = []
    for i in range(n):
        temp = input()
        g.append(temp)
        for j in range(m):
            if temp[j] == "G":
                good.append((i, j))
    if len(good) == 0:
        print("Yes")
        continue
    x, y = good[0]
    next_grid = [(x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)]
    flag = 1
    for u, v in next_grid:
        #print(u, v)
        if not(0 <= u < n and 0 <= v < m):
            continue
        if g[u][v] == "B":
            print("No")
            flag = 0
            break
    if not flag:
        continue
    d = bfs(x, y)
    if d[n - 1][m - 1] < 0:
        print("No")
        continue
    for x, y in good:
        if d[x][y] < 0:
            print("No")
            flag = 0
            break
    if flag:
        print("Yes")
    
